Архив метки: Базы Данных

Python и SQLite – скрипт для работы с базой данных

Для работы с базой данных мы используем скрипт-обработчик. Если вы решите сменить базу данных на PostgreSQL или другую, то нет необходимости переписывать все скрипты в проекте. Достаточно изменить только скрипт-обработчик.

И главное, это красиво ) Сравните:

import sqlite3
    
    
with sqlite3.connect('db.sqlite3') as conn:
    cur = conn.cursor()
    cur.execute("""
        SELECT title, price, sku 
        FROM products
        WHERE sku = (?)
    """, (sku, ))
    rows = cur.fetchall()
    for item in rows:
        row = {
            "title": item[0],
            "price": item[1],
            "sku": item[2]
        }
        print(row)
import db


rows = db.fetchall(
    database='db.sqlite3',
    table='products',
    columns=["title", "price", "sku"],
    where=f"WHERE sku = '{sku}'"
)
for row in rows:
    print(row)

 

Сравнение Django и SQLAlchemy

По мере того, как со временем развивается и совершенствуется все больше и больше технологий, количество пользователей, получающих доступ в Интернет, растет еще больше, и в результате объем данных, с которыми приходится иметь дело предприятиям и организациям, растет в геометрической прогрессии. Чтобы компания была успешной, ей нужны инструменты и инфраструктура, которые могут легко работать с этими большими наборами данных. Именно здесь появляется база данных, которая в основном предназначена для хранения и сбора данных. Более того, его организованная форма позволяет пользователям легко управлять набором данных и получать к нему доступ. Сами базы данных требуют системы управления, которая позволяет им хранить и предоставлять доступ к данным. В основном язык SQL используется для выполнения операций в базе данных, однако по мере роста и усложнения вашего приложения,

Альтернативой этому была разработана структура ORM (объектно-реляционное сопоставление), которая фактически создает мост между базой данных и языком программирования, который вы предпочитаете использовать при создании своего приложения. В этой статье мы рассмотрим и сравним плюсы и минусы двух наиболее популярных и широко используемых ORM, Django и SQLAlchemy.

 

Django против SQLAlchemy

Оба ORM — Django и SQLAlchemy — два самых популярных инструмента реляционного сопоставления на основе Python, и каждый из них имеет свои собственные уникальные преимущества. Давайте теперь перекрестно исследуем и рассмотрим оба их различия бок о бок.

 

1) Реализация уровня доступа к данным

Django использует так называемую реализацию активной записи, в которой один экземпляр объекта сопоставляется с каждой строкой базы данных, и данные легко доступны из базы данных. Здесь нет необходимости заранее настраивать схему базы данных, и они могут легко использоваться пользователями, поскольку основная идея в Django заключается в том, что он может понять структуру напрямую, просто взглянув на схему базы данных. В дополнение к этому, поскольку это прямое сопоставление между базой данных и объектом, любое изменение объекта также будет обновлено в базе данных.

SQLAlchemey использует реализацию Data Mapper, которая действует как средний уровень между вашим приложением и базой данных и передает данные между ними, сохраняя при этом их соединение независимо друг от друга. Это обеспечивает большую гибкость между двумя уровнями, а также более эффективное использование базы данных.

 

2) Лучше со сложными запросами

И Django, и SQLAlchemy — два отличных ORM, которые предоставляют одни из лучших функций, которые вы можете найти в инструментах реляционного сопоставления. С точки зрения обработки сложных запросов SQLAlchemy имеет преимущество, поскольку он намного лучше взаимодействует с базой данных и, как результат, его можно использовать для написания сложных запросов без необходимости возвращаться к необработанному SQL. Чтобы понять эту концепцию, давайте взглянем на следующие запросы, написанные как на Django, так и на SQLAlchemy.

Django:

Football.objects.filter(team__name="Manchester United")

SQLAlchemy:

SQLAlchemy: session.query(Football).join(Football, Team).filter(Team.name=="Kamma Sing")

 

Как видно из синтаксиса двух ORM, Django выглядит более абстрактным в своем запросе и показывает только установленное соединение между различными таблицами базы данных, в то время как SQLAlchemy идет гораздо глубже. Это различие между ними показывает, что Django гораздо более ленив и эффективнее справляется со сложными запросами.

 

3) Поддержка сообществ и баз данных

И Django, и SQLAlchemy являются чрезвычайно популярными фреймворками для реляционного сопоставления, и они поддерживаются некоторыми чрезвычайно удивительными сообществами. Последний, однако, превосходит это, поскольку имеет гораздо большее сообщество вместе с совершенно потрясающей документацией, которая свидетельствует о том, что члены сообщества вкладывают в это свое время. Даже если вы столкнетесь с какой-либо проблемой, вы можете легко опубликовать сообщение на StackOverflow или других форумах, и там найдется большое количество людей, желающих вам помочь.

Наряду с этим и Django, и SQLAlchemy поддерживают большой набор баз данных, таких как MySQL, PostgreSQL, Oracle и SQLite. Для пользователей, которые уже используют Microsoft SQL или планируют это сделать, SQLAlchemy снова является ответом, поскольку MSSQL обеспечивает его полную поддержку.

В целом, у обоих есть отличные сообщества и поддержка множества баз данных, что является хорошим признаком огромного качества, которым обладает каждая из них.

 

4) Приложения

Django был разработан в основном для веб-приложений, и именно там он работает лучше всего, поскольку имеет множество встроенных инструментов, таких как интеграция форм, предварительная проверка и т. Д .; все они чрезвычайно полезны для веб-приложений. В дополнение к этому, если вам просто требуются базовые запросы, тогда Django будет работать довольно хорошо, поскольку его также намного легче изучить.

Однако, если ваши веб-приложения или фреймворки требуют немного более сложных запросов, то SQLAlchemy — это то, что вам нужно. В дополнение к этому, поскольку он напрямую взаимодействует с базой данных, вы можете просто запускать запросы к базе данных, фактически не используя ORM. Кроме того, SQLAlchemy намного мощнее, чем Django, хотя и требует немного большего обучения.

 

Вывод:

И Django, и SQLAlchemy являются чрезвычайно популярными инструментами объектно-реляционного сопоставления, имеют большие сообщества для их поддержки и используются в широком спектре приложений по всему миру. Какой из них вам больше подходит? Это в основном зависит от ваших требований и от того, где именно вы хотите их использовать. В общем, оба являются отличным выбором для использования в качестве вашей системы ORM.



2021-03-24T13:28:16
Базы данных

Расширенный WordPress поиск и замена в базе данных в Linux с помощью sed

При переносе сайта WordPress или WooCommerce магазина на новый домен, вы можете найти некоторые URL-адреса или пути не обновленными. Точно так же при переходе с HTTP на HTTPS вы можете получить ошибки смешанного содержания, как правило, это может быть исправлено путем обновления базы данных. Традиционно существуют некоторые плагины и скрипты, которые помогут вам обновить базу данных, чтобы решить эти проблемы, если у вас все еще есть проблемы, этот пост должен помочь вам исправить пути и URL-адреса в вашей базе данных WordPress.

Мы впервые столкнулись с этой проблемой, когда обнаружили плагин Ultimate VC Add-ons, чтобы кодировать двоеточие и косую черту по- разному , как это http%3A%2F%2F

Я предполагаю, что у вас уже есть дамп базы данных WordPress, созданный с помощью PhpMyAdmin, плагина Adminer, дамп MySQL или WP-CLI.

Расширенный WordPress поиск и замена в базе данных в Linux с помощью sed

Я собираюсь использовать инструменты Linux  grep и sed для достижения максимальной скорости. Если у вас нет доступа к Linux, то вы можете использовать WordPress плагин  Better Search and Replace.

Поиск вхождений

Мы можем смоделировать с Grep, используя -c флаг, которая будет подсчитывать количество раз он находит строку domain.ru

grep -c 'andreyex.ru' database.sql

 

Вы получите целое число в качестве вывода, если вы видите 0, то нет вхождения domain.ru в базе данных

234

 

Закодированный URL

Некоторые плагины используют кодировку URL, которая использует этот формат для миграции HTTP и HTTPS %3A = :и %2F = /.

Для того, чтобы проверить, есть ли у вас какие-либо из них, в вашей базы данных, используете эту команду.

grep -c 'http%3A%2F%2F' database.sql

 

Слеши

Некоторые плагины избегают  и / и могут быть легко пропущены.

grep -c 'http://domain.ru' database.sql

 

Путь WordPress

Иногда плагины хранят информацию о пути хранения на вашем хосте, узнать можно с помощью этой команды

grep -c '/public_html/domain.ru' database.sql

 

Фактическая замена

Многие учебники используют в /качестве разделителя sed, я использую #, чтобы сделать его более удобным для чтения. Это также означает, что вам не придется искать какие — либо косые черты (/) в вашей команде SED.

означает глобальная замена и переадресовывает на новый файл, чтобы не изменять исходный дамп базы данных.

Эта команда заменяет domain.ru на newdomain.ru в файле dump.sql

sed 's#domain.com#newdomain.ru#g' dump.sql > staging-or-newdomain.sql

 

В этом примере есть вложенная папка для установки WordPress, # помогает maintan сохранить читабельность.

sed 's#domain.ru/oldfolder#newdomain.ru/newfolder#g' dump.sql > staging-or-newdomain.sql

 

Закодированный URL

Замена кодирующейся строки URL

sed 's#http%3A%2F%2Fdomain.ru#http%3A%2F%2Fnewdomain.ru#g' dump.sql > staging-or-newdomain.sql

 

Это как заменить закодированые строки URL доменов в подпапках

sed 's#http%3A%2F%2Fdomain.ru%2Fsubfolder#http%3A%2F%2Fnewdomain.ru%2Fsubfolder#g' dump.sql > staging-or-newdomain.sql

 

Слеши

Если вы нашли косую черту, эта команда заменит их

sed 's#http://domain.ru#http://newdomain.ru#g' dump.sql > staging-or-newdomain.sql

 

WordPress путь поиска и замены

Замена пути

sed 's#/public_html/andreyex.ru#/public_html/newfolder#g' dump.sql > staging-or-newdomain.sql

 

Это должно работать в большинстве баз данных WordPress, дайте нам знать в комментариях, если вы обнаружите какие-либо другие необычные шаблоны!

Использование Gzip для сжатия новых Dump

Мы можем сжать модифицированный дамп с помощью Gzip легко, он значительно сократит файл .sql

cat dump.sql | gzip > dump.sql.gz

 

Теперь вы можете повторно импортировать измененный дамп с помощью WP-CLI, PhpMyAdmin или Adminer.



2017-02-11T02:47:12
Базы данных