Меню Рубрики

Python mysql python windows

Базы данных в Python

Эта статья о том, как работать с базами данных в Python. Эта статья носит, скорее, вступительный характер. Вы не изучите весь язык SQL, вместо этого, я дам вам развернутое представление о командах SQL и затем мы научимся подключаться к нескольким популярным базам данных в Python. Большая часть баз данных использует базовые команды SQL одинаково, но они также могут использовать специальные команды для бекенда той или иной базы данных, или просто работают с некоторыми отличиями. Рекомендую ознакомиться с документацией к базам данных, если у вас возникнут проблемы. Мы начнем статью с изучения базового синтаксиса SQL.

Базовый синтаксис SQL

SQL расшифровывается как Structured Query Language (язык структурированных запросов). Это, в сущности, де-факто язык для взаимодействия с базами данных и является примитивным языком программирования. В данном разделе мы рассмотрим основы CRUD (Create, Read, Update и Delete). Это самые важные функции, которые вам нужно освоить, перед тем как использовать базы данных в Python. Конечно, вам также понадобится узнать как создавать запросы, но мы рассмотрим это по ходу дела, когда нужно будет выполнять запрос для чтения, обновления или удаления.

Создание таблицы

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

Это довольно обобщенный код, но он работает в большей части случаев. Первое, на что стоит обратить внимание – куча слов прописанных заглавными буквами. Это команды SQL. Их не всегда нужно вписывать через капс, но мы сделали это, чтобы помочь вам увидеть их. Я также хочу обратить внимание на то, что каждая база данных поддерживает слегка отличающиеся команды. Большинство будет содержать CREATE TABLE, но типы столбцов баз данных могут быть разными. Обратите внимание на то, что в этом примере у нас есть базы данных INTEGER, VARCHAR и DATE.

DATE может вызывать много разных штук, как и VARCHAR. Проконсультируйтесь с документацией на тему того, что вам нужно делать. В любом случае, в этом примере мы создаем базу данных с пятью столбцами. Первый – это id, который мы настраиваем в качестве нашего основного ключа. Он не должен быть NULL, но мы и не указываем, что в нем, так как еще раз, каждый бекенд базы данных выполняет работу по-разному, или делает это автоматически для нас. Остальные столбцы говорят сами за себя

Введение данных

Сейчас наша база данных пустая. Это не очень полезно в использовании, так что в этом разделе мы научимся добавлять данные в базу. Вот общая идея:

SQL использует команды INSERT INTO для добавления данных в определенную базу данных. Вы также указываете, в какие столбцы вы добавляете данные. Когда мы создаем таблицу, мы можем определить необходимый столбец, который может вызвать ошибку, если мы не добавим в него необходимые данные. Однако, мы не делали этого в нашем определении таблицы ранее. Это просто на заметку. Вы также получите ошибку, если передадите неправильный тип данных, от этой вредной привычки я не мог отвыкнуть целый год. Я передавал строку или varchar, вместо данных. Конечно, каждая база данных требует определенный формат этих самых данных, так что вам может понадобиться разобраться с тем, что именно значит DATE для вашей базы данных.

Обновление данных

Представим, что мы сделали опечатку в нашем INSERT. Чтобы это исправить, нам нужно использовать команду SQL под названием UPDATE:

Команда UPDATE говорит нам, какая таблица нуждается в обновлении. Далее мы используем SET в одном или более столбцах для вставки нового значения. Наконец, на нужно указать базе данных ту строку, которую мы хотим обновить. Мы можем использовать команду WHERE, чтобы указать базе данных, что мы хотим изменить строчку, Id которой является 1.

Чтение данных

Чтение данных нашей базы данных осуществляется при помощи оператора SQL под названием SELECT:

Так мы возвращаем все строчки из нашей базы данных, но результат будет содержать только три части данных: название, создание и модель. Если вы хотите охватить все данные в базе данных, вы можете выполнить следующее:

Звездочка в данном случае это подстановка, которая говорит SQL, что вы хотите охватить все столбцы. Если вы хотите ограничить выбранный вами охват, вы можете добавить команду WHERE в вашем запросе:

Так мы получим информацию о названии, создании и модели для 2000-2006 годов. Существует ряд других команд SQL, которые помогут вам в работе с запросами. Убедитесь, что ознакомитесь с такими командами как BETWEEN, LIKE, ORDER BY, DISTINCT и JOIN.

Удаление данных

Возможно, вам понадобиться удалить данные из вашей базы данных. Как это сделать:

Этот код удалит все строчки, в поле названия которых указано «Ford» из нашей таблицы. Если вы хотите удалить всю таблицу, вы можете воспользоваться оператором DROP:

Используйте DROP и DELETE осторожно, так как вы легко можете потерять все данные, если вызовете оператор неправильно. Всегда держите хороший, годный, проверенный бекап вашей базы данных.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

adodbapi

В версиях Python2.4 и 2.5, мне нужно было подключаться к серверу SQL 2005 и Microsoft Access, и один из них или оба были настроены только для использования методологии подключения Microsoft к ADO. На то время решением было использовать пакет adodbapi. Этот пакет следует использовать тогда, когда вам нужно получить доступ к базе данных через Microsoft ADO. Я заметил, что этот пакет не обновлялся с 2014 года, так что помните об этом. К счастью, вам не нужно использовать этот пакет, так как Microsoft также предоставляет драйвер связи ODBC, но если по какой-то причине вам нужно поддерживать только ADO, то этот пакет – то, что вам нужно!

Запомните: adodbapi зависит от наличия установленного пакета PyWin32.

Для установки adodbapi, вам нужно сделать следующее:

Давайте посмотрим на простой пример, который я использую для связи с Microsoft Access на протяжении длительного времени:

Сначала мы создаем строку соединения. Эти строки определяют, как связаться с Microsoft Access или сервером SQL. В данном случае, мы подключаемся к Access. Для непосредственной связи с базой данных, вы вызываете метод connect и передаете ему вашу строку связи. Теперь у вас есть объект соединения, но для взаимодействия с базой данных вам нужен курсор. Его мы и создаем. Следующая часть – написание запроса SQL. В данном случае мы используем всю базу данных, так что мы выделяем * и передаем этот оператор SQL методу execute нашего курсора. Для получения результата мы вызываем fetchall, который возвращает весь результат. Наконец, мы закрываем cursor и connection. Если вы используете пакет adodbapi, я настоятельно рекомендую пройтись по справочному документу. Это очень полезно для понимания пакета, так как он не слишком хорошо документирован.

pyodbc

ODBC (Open Database Connectivity) – это стандартный API для доступа к базам данных. Большая часть баз данных продукции включает драйвер ODBC, который вы можете установить для связи с базой данных. Один из самых популярных методов связи с Python через ODBC – это пакет pyodbc. В соответствии с его страницей на Python Packaging Index, вы можете использовать его как на Windows, так и Linux. Пакет pyodbc реализует спецификацию DB API 2.0. Вы можете установить pyodbc при помощи pip:

Давайте взглянем на довольно обобщенный способ подключения к серверу SQL при помощи pyodbc и выберем какие-нибудь данные, как мы делали это в разделе adodbapi:

В данном коде мы создаем очень длинную строку связи. У нее много частей. Драйвер, сервер, номер порта, название базы данных, пользователь и пароль. Возможно, вам захочется сохранить большую часть этой информации в какой-нибудь файл конфигурации, так что вам не нужно будет вводить эту строку каждый раз. Желательно не перемудрить с именем пользователя и паролем. После получения нашей строки связи, мы попытаемся соединиться с базой данных, вызвав функцию connection. Если подключение прошло удачно, то мы получаем объект подключения, который мы можем использовать для создания объекта курсора. Теперь у нас есть курсор, мы можем запросить базу данных и запустить любые команды, которые нам нужны, в зависимости от того, какой доступ у базы данных. В этом примере, мы запускаем SELECT * для извлечения всех строчек. Далее мы демонстрируем нашу возможность брать по одной строчке за раз и вытягивать их через fetchone и fetchall соответственно. Также у нас в распоряжении имеется функция fetchmany, которую вы можете использовать для определения того, как много строчек вам нужно вернуть. Если вы имеете дело с базой данных, которая работает с ODBC, вы также можете использовать данный пакет. Обратите внимание на то, что базы данных Microsoft не единственные поддерживают данный метод соединения.

pypyodbc

Пакет pypyodbc, по сути, чистый скрипт Python. Это, в целом, переопределенный pyodbc чисто под Python. Это значит, что pyodbc – это Python, обернутый в бекенд C++, в то время как pypyodbc это чистый код Python. Он поддерживает тот же API, как и предыдущий модуль, так что эти модули взаимозаменяемые в большинстве случаев. В связи с этим, я не буду показывать никаких примеров в данном разделе, так как единственная разница между ними – это импорт.

MySQL в Python

MySQL – это очень популярный бекенд баз данных с открытым кодом. Вы можете подключить его к Python несколькими различными путями. Например, вы можете подключить его, используя один из методов ODBC, которые я упоминал в последних двух разделах. Один из наиболее популярных способов подключения MySQL к Python это пакет MySQLdb. Существует несколько вариантов того пакета:

Первый – это привычный способ подключения MySQL к Python. Однако, в основном он используется только в разработке и на данный момент не получает никаких новых функций. Разработчики переключились на MySQLdb2, и преобразовали его в проект moist. В MySQL произошел раскол после того, как их купили Oracle, что привело к разветвлению на проект, который называется Maria. Так что мы имеем дело с проектами MariaDB, MySQL и еще одной веткой, под названием Drizzle, каждая из которых, в той или иной мере основана на исходном коде MySQL. Проект moist направлен на создание моста, который мы можем использовать для соединения со всеми этими бекендами, к тому же, он все еще находится на этапах альфа или бета с момента публикации. Путаницу также создает тот факт, что MySQLdb завернут в _mysql, который вы можете использовать напрямую, если это нужно. В любом случае, вы быстро заметите, что MySQLdb не совместим с Python 3, вообще. Совместимость с проектом moist скоро будет, но пока её нет. Итак, как же работать с Python 3? У вас есть несколько вариантов:

  • mysql-connector-python
  • pymysql
  • CyMySQL
  • mysqlclient

mysqlclient – это ответвление MySQL-Python (другими словами, MySQLdb), который обеспечивает поддержку Python 3. Это метод, который проект Django рекомендует для подключения к MySQL. Так что мы сфокусируемся на этом пакете в данном разделе. Обратите внимание на то, что вам понадобится установленный MySQL или MySQL Client для успешной установки пакета mysqlclient. Если вы уже сделали это ранее, то вам остается только использовать pip для установки:

Источник

Пособие по MySQL на Python

Начало работы с MySQL на Python

Это руководство поможет вам начать работу с MySQL на Python . Вы узнаете об особенностях MySQL на Python и как установить MySQL Connector / Python на вашей локальной системе.

Введение в MySQL на Python

Для доступа к базе данных MySQL из Python , вам нужен драйвер базы данных. MySQL Connector / Python является стандартизированным драйвером базы данных, предоставляемым MySQL .

MySQL Connector / Python поддерживает почти все функции, предоставляемые MySQL версии 5.7 . Он позволяет конвертировать значения параметров между Python и MySQL , например, Python DateTime и MySQL DATETIME .

MySQL Connector / Python разработан специально для MySQL . Он поддерживает все расширения MySQL для стандартного SQL , такие как условие LIMIT .

MySQL Connector / Python позволяет сжимать поток данных между Python и сервером базы данных MySQL с использованием сжатия протоколов. Он поддерживает соединения с использованием сокета TCP / IP и безопасные TCP / IP соединения, использующие SSL .

MySQL Connector / Python представляет собой API , реализованнный с помощью чистого Python . Это означает, что вам не нужно устанавливать какую-либо клиентскую библиотеку MySQL или модули Python , кроме стандартной библиотеки.

В этом пособии мы будем рассматривать MySQL / Python 2.0 , который поддерживает Python версий 2.6, 2.7 и 3 .3 .

Скачивание коннектора MySQL Python

Для работы с коннектором MySQL Python вам необходимо скачать и установить его в вашей локальной системе. Доступны версии для различных платформ: Mac OS X , Microsoft Windows , Ubuntu Linux и т.д. Вам просто нужно выбрать нужную платформу и запустить скачивание.

Установка коннектора MySQL Python

Процесс установки коннектора MySQL Python довольно прост. Например, чтобы установить его в среде Windows , нужно выполнить следующие действия:

  • Распаковать загруженный файл во временный каталог, например, C: Temp ;
  • Открыть окно консоли и переключиться на папку, в которую вы распаковали коннектор:

Проверка правильности установки MySQL Connector / Python

После установки коннектора MySQL Python вы должны проверить его, чтобы убедиться, что он работает правильно, и вы можете подключаться к серверу базы данных MySQL без каких-либо проблем. Для проверки правильности установки выполните следующие действия:

  • Откройте командную строку Python ;
  • Введите следующий код:

Если на экране появится приведенный ниже текст, значит, вы успешно установили коннектор MySQL Python на вашей системе:

Давайте перейдем к следующему разделу, чтобы узнать, как подключаться к базе данных MySQL из Python .

Подключение Python к базе данных MySQL

В этом разделе вы узнаете о различных способах подключения к базам данных MySQL из Python с использованием MySQL Connector / Python API .

Подготовка экземпляра базы данных

Во-первых, для этого пособия мы создаем новую базу данных с именем python_mysql . Чтобы создать новую базу данных, вы можете запустить MySQL Workbench или клиентский инструмент MySQL и использовать оператор CREATE DATABASE следующим образом:

Во-вторых, вам нужно загрузить данные в базу данных python_mysql.sql из файла python_mysql.sql .

Пример базы данных Python MySQL

Подключение к базе данных MySQL с помощью функции connect()

Давайте рассмотрим следующий модуль Python (python_mysql_connect1.py) :

Давайте рассмотрим этот модуль в деталях:

  • Во-первых, мы импортируем объекты mysql.connector и Error из пакета MySQL Connector / Python ;
  • Во-вторых, для подключения к базе данных MySQL мы используем функцию connect() , которая принимает следующие параметры: хост, база данных, пользователь и пароль. Функция connect() устанавливает соединение с базой данных python_mysql и возвращает объект MySQLConnection ;
  • В-третьих, мы проверяем, было ли успешно установлено соединение с базой данных MySQL с помощью метода is_connected() . В случае возникновения исключений, например, если сервер базы данных не доступен, база данных не существует, имя пользователя или пароль неверны и т.д., Python вызовет исключение Error . Мы обрабатываем это исключение, используя блок try except ;
  • В-четвертых, если не произошло исключение, мы закрываем соединение с базой данных, вызвав метод Close() объекта MySQLConnection .

Для тестирования модуля python_mysql_connect1.py, используется следующая команда:

В этом примере, мы жестко задали настройки базы данных, такие как localhost , python_mysql,root , что нельзя назвать хорошей практикой. Поэтому давайте исправим это.

Подключение к базе данных MySQL с помощью объекта MySQLConnection

В этом примере мы создадим конфигурационный файл базы данных с именем config.ini и определим раздел с четырьмя параметрами следующим образом:

Мы можем создать новый модуль с именем python_mysql_dbconfig.py , который считывает конфигурацию базы данных из файла config.ini и возвращает словарь следующим образом:

Обратите внимание, что мы использовали пакет ConfigureParser , чтобы считать файл конфигурации.

Давайте проверим этот модуль в REPL :

Он работает, как ожидалось.

Теперь мы можем создать новый модуль python_mysql_connect2.py , который использует объект MySQLConnection для подключения к базе данных python_mysql :

Давайте рассмотрим приведенный выше код более подробно:

  • Во-первых, мы импортировали необходимые объекты, в том числе MySQLConnection , Error из пакета MySQL Connector / Python и read_db_config из модуля python_mysql_dbconfig , который мы разработали;
  • Во-вторых, внутри функции Connect() , мы считали конфигурацию базы данных и использовали ее для создания нового экземпляра объекта MySQLConnection . Остальная часть кода работает аналогично первому примеру.

Когда мы запускаем python_mysql_connect2 в окне консоли, мы получаем следующий результат:

В этом разделе мы рассмотрели, как подключаться к базам данных MySQL с помощью функцию connect() и объекта MySQLConnection . Оба способа дают тот же результат — устанавливают соединение с базой данных MySQL и возвращают объект MySQLConnection .

Запросы Python MySQL

В этом разделе мы покажем, как запрашивать данные из базы данных MySQL в Python с использованием MySQL Connector / Python API, таких как fetchone(), fetchmany() и fetchall().

Для запроса данных из базы данных MySQL из Python вам нужно сделать следующее:

  • Подключиться к базе данных MySQL , вы получаете объект MySQLConnection ;
  • Установить экземпляр объекта MySQLCursor из объекта MySQLConnection ;
  • Использовать курсора для выполнения запроса путем вызова метода execute() ;
  • Использовать методы fetchone() , fetchmany() и fetchall() для выборки данных из результативного набора;
  • Закрыть курсор, а также подключение к базе данных, вызвав метод close() соответствующего объекта.

Мы расскажем, как использовать методы fetchone() , fetchmany() и fetchall() более подробно в следующих разделах.

Запрос данных с помощью fetchone

Метод fetchone() возвращает следующую строку набора результатов запроса или Non e в случае, если строк не осталось. Давайте посмотрим на следующий код:

Давайте рассмотрим его более подробно:

  • Во-первых, мы подключаемся к базе данных, создав новый объект MySQLConnection ;
  • Во-вторых, из объекта MySQLConnection мы устанавливаем новый объект MySQLCursor ;
  • В-третьих, мы выполняем запрос, который выбирает все строки из таблицы books ;
  • В-четвертых, мы вызываем метод fetchone() , чтобы выбрать следующую строку из набора результатов. В блоке while loop мы выводим содержимое строки и переходим к следующей строке, пока все строки не будут выбраны;
  • В-пятых, мы закрываем курсор и объект подключения через вызов метода close() соответствующего объекта.

Запрос данных с помощью fetchall

В том случае, если число строк в таблице мало, вы можете использовать для извлечения всех строк из таблицы базы данных метод fetchall() . Рассмотрим следующий код:

Логика тут почти та же, что и в примере с использованием метода fetchone() , за исключением вызова метода fetchall() . Так как мы выбрали в память все строки из таблицы books , мы можем получить общее количество возвращаемых строк с помощью свойства rowcount объекта курсора.

Запрос данных с помощью fetchmany

Для сравнительно больших таблиц извлечение всех строк и возвращение набора результатов может занять значительное время. Кроме того, для fetchall() необходимо выделение достаточного объема памяти для хранения всего набора результатов. Это не слишком эффективно.

MySQL Connector / Python предоставляет нам метод fetchmany() , который возвращает следующее количество строк (n) набора результатов, что позволяет нам эффективно использовать объем памяти за оптимальное время. Давайте рассмотрим, как используется метод fetchmany() .

Во-первых, мы разрабатываем генератор, который разбивает вызовы базы данных на серию вызовов fetchmany() следующим образом:

Во-вторых, мы можем использовать генератор iter_row() для извлечения 10 строк за раз, как это показано ниже:

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

Вставка данных в Python MySQL

В этом разделе мы расскажем, как вставлять данные в таблицы MySQL с использованием MySQL Connector / Python API .

Чтобы вставить новые строки в таблицу MySQL необходимо выполнить следующие действия:

  • Подключиться к серверу базы данных MySQL , создав новый объект MySQLConnection ;
  • Инициировать объект MySQLCursor из объекта MySQLConnection ;
  • Выполнить оператор INSERT для вставки данных в соответствующую таблицу;
  • Закрыть соединение с базой данных.

MySQL Connector / Python предоставляет API , который позволяет вставить за один раз одну или несколько строк в таблицу. Давайте рассмотрим каждый метод более подробно.

Вставка одной строки в таблицу

Следующий код вставляет новую книгу в таблицу books :

В приведенном выше коде мы:

  • Во-первых, импортируем объекты MySQLConnection и Error из пакета MySQL Connector / Python и функцию read_db_config() из модуля python_mysql_dbconfig ;
  • Во-вторых, определяем новую функцию под названием insert_book() , которая принимает два аргумента: название и ISBN . Внутри функции insert_book() , мы готовим оператор INSERT ( запрос ) и данные ( аргументы ), которые мы будем вставлять в таблицу books . Обратите внимание, что данные, которые мы передаем в функцию, это кортеж;
  • В-третьих, внутри блока try except мы создаем новое подключение, выполняем оператор и утверждаем изменения. Обратите внимание, что вы должны вызвать метод commit() явно для того, чтобы изменения в базу данных были внесены. В случае, если новая строка была вставлена успешно, мы можем получить последний вставленный id столбца АUTO INCREMENT с помощью свойство lastrowid объекта MySQLCursor ;
  • В-четвертых, в конце функции insert_book() мы закрываем курсор и соединение с базой данных;
  • В-пятых, в функции main() мы вызываем функцию insert_book() и передаем title и isbn , чтобы вставить новую строку в таблицу books .

Вставка нескольких строк в таблицу

Оператор MySQL INSERT позволяет вставить сразу несколько строк с помощью синтаксиса VALUES . Вам просто нужно включить несколько списков значений столбцов. Каждый список заключен в скобки и разделен запятыми. Например, чтобы вставить несколько книг в таблицу books используется следующий оператор:

Логика в этом примере аналогична логике первого примера. Только вместо вызова метода execute() мы используем метод executemany() .

В функции main() мы передаем список кортежей, каждый из которых содержит название и ISBN книги.

Вызвав метод executemany() объекта MySQLCursor, MySQL Connector / Python переводит оператор INSERT в оператор, который содержит несколько списков значений.

В этом разделе мы рассмотрели, как вставить одну или несколько строк в таблицу MySQL в Python .

Обновление данных в Python MySQL

В этом разделе мы рассмотрим действия, необходимые для обновления данных в таблице MySQL с помощью MySQL Connector / Python API .

Для обновления данных в таблице MySQL в Python , вам нужно выполнить следующие действия:

  • Подключиться к серверу базы данных MySQL , создав новый объект MySQLConnection ;
  • Создать новый объект MySQLCursor из объекта MySQLConnection и вызвать метод execute() объекта MySQLCursor . Чтобы утвердить изменения, нужно вызвать метод commit() объекта MySQLConnection после вызова метода execute() . В противном случае никакие изменения в базу данных внесены не будут;
  • Закрыть курсор и соединение с базой данных.

В следующем примере, мы будем обновлять название книги, указанной через ID книги:

В этом модуле мы использовали функцию read_db_config() из модуля python_mysql_dbconfig , который мы создали в разделе Подключение к базе данных через Python.

Внутри оператора UPDATE мы размещаем два заполнителя ( % ), один для названия книги, второй — для ID книги. Мы передали оба кортежа оператора UPDATE ( query ) и ( title,id ) в метод execute() . Коннектор интерпретирует запрос следующим образом:

Важно помнить, что мы всегда должны использовать заполнители ( % ) внутри любых операторов SQL , которые содержат информацию пользователей. Это помогает нам предотвратить потенциально вредоносные действия.

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

Во-первых, мы выбираем книгу с ID 37 :

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

В этом разделе вы рассказали, как обновлять данные с помощью MySQL Connector / Python API .

Удаление данных в MySQL на Python

В этом разделе мы рассмотрим этапы удаления данных из базы данных MySQL с помощью MySQL Python .

Для удаления строк в таблице MySQL через Python вам нужно совершить следующие действия:

  • Подключиться к серверу базы данных MySQL , создав новый объект MySQLConnection ;
  • Создать новый объект MySQLCursor из объекта MySQLConnection и вызвать метод execute() объекта MySQLCursor . Чтобы утвердить изменения, нужно вызвать метод commit() объекта MySQLConnection после вызова метода execute() ;
  • Закрыть курсора и соединение с базой данных, вызвав метод close() соответствующего объекта.

В следующем примере показано, как удалить книгу с указанным ID :

Обратите внимание, что мы используем функцию read_db_config() из модуля python_mysql_dbconfig , который мы разработали в предыдущих разделах.

Так как нам нужно удалить из таблицы books конкретную строку, мы должны разместить заполнитель ( % ) на стороне оператора DELETE .

Когда мы вызываем метод execute() , мы передаем ему и оператор DELETE и кортеж ( book_id, ). Коннектор интерпретирует оператор DELETE в следующую форму:

Вы должны всегда использовать заполнители внутри любого запроса, который вы передаете в метод execute() .
Это помогает нам предотвратить потенциально вредоносные действия.

Перед запуском кода, давайте проверим таблицу books , чтобы просмотреть данные, прежде чем мы удалим запись:

В этом разделе мы рассмотрели, как удалить данные из таблицы MySQL с использованием MySQL Connector / Python API.

Вызов в Python хранимых процедур MySQL

В этом разделе мы покажем, как вызывать в Python хранимые процедуры MySQL с использованием MySQL Connector / Python API .

Прежде чем мы начнем

В этом разделе в качестве демонстрации мы создадим две хранимые процедуры. Первая — для получения всех книг с информацией об авторе из таблиц books и authors :

Хранимая процедура find_all() содержит оператор SELECT с условием JOIN , который извлекает название, ISBN и полное имя автора из таблиц books и authors . Когда мы выполняем хранимую процедуру find_all() , она возвращает следующий результат:

find_by_isbn() принимает два параметра: первый параметр ISBN ( параметр IN ), второй — заголовок ( OUT параметр ). Когда вы передаете в хранимую процедуру ISBN , вы получаете название книги, например:

Вызов хранимых процедур из Python

Для вызова хранимой процедуры в Python , вам нужно выполнить следующие действия:

  • Подключиться к серверу базы данных MySQL , создав новый объект MySQLConnection ;
  • Создать новый объект MySQLCursor из объекта MySQLConnection , вызвав метод cursor() ;
  • Вызвать метод callproc() объекта MySQLCursor . Вы передаете имя хранимой процедуры в качестве первого аргумента метода callproc() . Если для хранимой процедуры требуются параметры, вы должны передать их список в качестве второго аргумента метода callproc() . В случае, если хранимая процедура возвращает набор результатов, вы можете ссылаться на метод stored_results() объекта MySQLCursor , чтобы получить итератор списка и перебрать этот набор результатов с помощью метода fetchall() ;
  • Закрыть курсора и подключение к базе данных, как всегда.

Следующий пример демонстрирует, как вызывать хранимую процедуру find_all()в Python и выводить набор результатов:

В следующем примере показано, как вызвать хранимую процедуру find_by_isbn() :

Для хранимой процедуры find_by_isbn() требуются два параметра, следовательно, мы должны передать список ( args ), который содержит два элемента: первый из них ISBN ( 1236400967773 ), а второй 0 . Второй элемент списке аргументов ( 0 ) — это просто заполнитель содержащий параметр p_title .

Метод callproc() возвращает список ( result_args ), который содержит два элемента, где второй элемент ( result_args[1] ) содержит значение параметра p_title .

В этом разделе мы рассмотрели, как вызываются хранимые процедуры через Python с использованием метода callproc() объекта MySQLCursor .

Работа в Python MySQL с BLOB

В этом разделе мы рассмотрим, как работать в Python с данными MySQL BLOB , а именно примеры обновления и чтения данных BLOB .

В таблице authors содержится столбец с именем photo , в котором хранятся данные типа BLO B. Мы считаем данные из файла изображения и обновим ими столбец photo .

Обновление в Python BLOB-данных

Во-первых, мы разрабатываем функцию с именем read_file() , которая считывает файл и возвращает содержимое файла:

Во-вторых, мы создаем новую функцию под названием update_blob() , которая обновляет фото автора, указанного с помощью author_id .

Давайте подробно рассмотрим этот код:

  • Во-первых, мы вызываем функцию read_file() , которая считывает данные из файла и возвращает их;
  • Во-вторых, мы составляем оператор UPDATE , который обновляет столбец фото автора, указанного с помощью author_id . Переменная args — это кортеж, который содержит данные файла и author_id . Мы передаем эту переменную в метод execute() вместе с query ;
  • В-третьих, внутри блока try except мы подключаемся к базе данных, устанавливаем курсор и выполняем запрос с args . Для того чтобы изменения вступили в силу, мы вызываем метод commit() объекта MySQLConnection ;
  • В-четвертых, мы закрываем курсора и соединение с базой данных в блоке finally .

Обратите внимание, что мы импортировали объекты MySQLConnection и Error из пакета MySQL Connector / Python и функцию read_db_config() из модуля python_mysql_dbconfig , который мы разработали в предыдущих разделах.

Давайте протестируем функцию update_blob() :

Обратите внимание, что для тестирования вы можете использовать следующую фотографию и поместить ее в папку изображений:

Чтение данных BLOB в Python

В этом примере мы выбираем BLOB -данные из таблицы авторов и записываем их в файл.

Во-первых, мы разрабатываем функцию write_file() , которая записывает двоичные данные в файл следующим образом:

Во-вторых, мы создаем новую функцию под названием read_blob() :

Функция read_blob() считывает BLOB -данные из таблицы authors и записывает их в файл, указанный в параметре имени файла.

Этот код действует очень просто:

  • Во-первых, мы составляем оператор SELECT , который извлекает фотографию конкретного автора;
  • Во-вторых, мы получаем конфигурацию базы данных, вызвав функцию read_db_config() ;
  • В-третьих, внутри блока try except мы подключаемся к базе данных, устанавливаем курсор и выполняем запрос. После того, как мы получили BLOB -данные, мы используем функцию write_file() , чтобы записать их в файл, указанный в имени файла;
  • В-четвертых, в конечном блоке мы закрываем курсор и соединение с базой данных.

Теперь, давайте проверим функцию read_blob() :

Если вы откроете папку вывода в проекте и увидите там картинку, это означает, что вы успешно считали BLOB -данные.
В этом разделе, мы рассказали, как обновлять и считывать BLOB -данные в MySQL из Python с использованием MySQL Connector / API .

Данная публикация представляет собой перевод статьи « Python MySQL Tutorial » , подготовленной дружной командой проекта Интернет-технологии.ру

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Python matplotlib установка windows
  • Python launcher for windows
  • Python kivy установка windows
  • Python keras установка под windows
  • Python import serial windows