Не получить вовсе — не страшно, но лишиться полученного обидно (Клавдий Элиан).

Как подключиться к базе данных MySQL из Python с примерами

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
7 апреля 2017
Как подключиться к базе данных MySQL из Python с примерами
Из программы на Python, вы можете подключиться к базе данных MySQL, чтобы получить доступ к таблицам и манипулировать данными.

Для этого, вы должны использовать одну из библиотек Python MySQL. Хотя есть некоторые из этих библиотек доступны, наиболее популярной и стабильной является библиотека mysql-connector-python.

Библиотека mysql-connector-python использует API-интерфейсы, которые совместимы  со спецификацией API базы данных в Python v2.0 (PEP 249). Кроме того, эта библиотека сама по себе написана в программе Python и не имеет каких-либо других внешних зависимостей, что делает легче ее поддерживать.

В этом руководстве объясняется, как установить библиотеку mysql-connector-python. Мы также предоставили программу примера Python, который показывает, как использовать API для подключения к базе данных MySQL и извлекать данные из таблиц.

1. Установка соединения с MySQL

Библиотека mysql-connector-python доступна для всех разновидностей Linux, включая CentOS, Debian, Ubuntu, RedHat. Она также доступна для Windows.

Вы можете скачать mysql-connector-python здесь.

В следующем примере я использую команду wget, чтобы непосредственно скачать файл RPM для установки его на CentOS 7.

# wget http://cdn.mysql.com//Downloads/Connector-Python/mysql-connector-python-2.1.3-1.el7.x86_64.rpm

 

Затем, используя команду rpm, установите библиотеку mysql-connector-python, как показано ниже. Она не имеет какие – либо другие дополнительные зависимости пакета. Все, что вам нужно, это просто этот пакет.

# rpm -ivh mysql-connector-python-2.1.3-1.el7.x86_64.rpm 
Preparing...         ############# [100%]
Updating / installing...
   1:mysql-connector-python-2.1.3-1.el################# [100%]

2. Проверьте установку библиотеки Python MySQL

В следующем примере, этот сервер имеет установку Python версии 2.7.5.

# python -V
Python 2.7.5

 

Затем используйте функцию get_python_lib, чтобы получить каталог, где будут установлены все библиотеки Python. Перед тем, как можно будет использовать функцию get_python_lib, вы должны также импортировать эту функцию, как показано ниже.

# python
>>> from distutils.sysconfig import get_python_lib
>>> print get_python_lib() 
/usr/lib/python2.7/site-packages

 

Как мы видим из приведенного выше вывода, на данной системе установлена ​​библиотека Python в каталоге /usr/lib/python2.7/site-packages. Проверьте, есть ли у нас mysql_connector_python доступен в этом каталоге, как показано ниже.

# ls -l /usr/lib/python2.7/site-packages | grep -i mysql
drwxr-xr-x.  3 root root     78 Jun  7 10:23 mysql
-rw-r--r--.  1 root root   1499 Sep 14  2016 mysql_connector_python-2.1.3-py2.7.egg-info

 

При выполнении любой команды из командной строки Python, не дают места перед командой. Если у вас есть какое-либо дополнительное пространство в передней части «print», он будет отображать сообщение об ошибке «IndentationError: unexpected indent».

>>>  print get_python_lib() 
  File "<stdin>", line 1
    print get_python_lib() 
    ^
IndentationError: unexpected indent

 

Кроме того, если вы пытаетесь выполнить get_python_lib без импорта, вы увидите следующее сообщение об ошибке.

>>> print get_python_lib() 
NameError: name 'get_python_lib' is not defined

3. Проверка загрузки библиотеки MySQL в Python

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

# python
>>> import mysql.connector
>>> exit();

 

Если вы получите следующее сообщение об ошибке, то что-то не так с установкой библиотеки Python MySQL.

>>> import mysql.connector
ImportError: No module named mysql.connector

4. Подключение к базе данных MySQL из программы на Python

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

В следующем примере, программа Python попытается подключиться к базе данных MySQL под названием «andreyex», которая работает на локальном хосте (127.0.0.1), с заданным именем и паролем.

Mysql.connector.connect является библиотечной функцией MySQL-Python, которая будет создавать эту связь, как показано ниже. Эта функция возвращает объект подключения, который мы храним в переменной «conn». Прежде чем мы можем вызвать любую из функций библиотеки MySQL, мы должны сначала импортировать библиотеку с помощью “import mysql.connector”, как показано в примере ниже.

Позже мы можем использовать переменную «conn» для вызова других функций библиотеки MySQL Python для манипулирования данными в таблицах. Наконец, мы используем conn.Close(), которая просто закроет соединение MySQL, которое было открыто.

# cat con-test.py
import mysql.connector

conn = mysql.connector.connect(
         user='root',
         password='Dev$SQL2Pwd',
         host='127.0.0.1',
         database='andreyex')

conn.close()

 

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

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

# python con-test.py
#

 

Если есть ошибка во время установки соединения, то будет сгенерировано сообщение об ошибке, как показано ниже. В следующем примере, выдаст сообщение об ошибке «Access denied», это означает, что данное сочетание имя пользователя и пароль недействительно.

# python con-test.py
Traceback (most recent call last):
  File "my.py", line 5, in <module>
    database='test')
  File "/usr/lib/python2.7/site-packages/mysql/connector/__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "/usr/lib/python2.7/site-packages/mysql/connector/abstracts.py", line 719, in connect
    self._open_connection()
  File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 210, in _open_connection
    self._ssl)
  File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 144, in _do_auth
    self._auth_switch_request(username, password)
  File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 177, in _auth_switch_request
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

5. Получить записи из таблицы MySQL с помощью скрипта в Python

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

# cat employee.py 
import mysql.connector

conn = mysql.connector.connect(
         user='root',
         password='Dev$SQL&Pwd',
         host='127.0.0.1',
         database='andreyex')

cur = conn.cursor()

query = ("SELECT * FROM employee")

cur.execute(query)

for (id, name, dept, salary) in cur:
  print("{}, {}, {}, {}".format(id, name,dept,salary))

cur.close()
conn.close()

 

В приведенном выше примере программы Python:

  • import mysql.connector – Импортирует библиотеку соединения MySQL в Python.
  • conn = mysql.connector.connect – Подключается к определенной базе данных MySQL, используя данное имя БД, имя пользователя, пароль и хост. Возвращает объект соединения, который хранится в переменной «conn».
  • cur = conn.cursor() – С помощью объекта соединения, который мы только что создали, мы создаем новый курсор для извлечения и манипулирования нашим запросом. Объект cursor будет храниться в переменной «cur».
  • query = (“SELECT … ) – Здесь мы определяем наш запрос MySQL. В этом примере, мы просто выбираем все записи из таблицы сотрудников. Если вы хотите использовать другой вариант команды SELECT, то будет полезно прочитать: 25 примеров команды SELECT в MySQL.
  • cur.execute(query) – Использование переменной «cur» курсор, которую мы создали выше, будет выполнять данный запрос. Поскольку курсор уже привязан к конкретному соединению, она точно знает, где необходимо выполнять запроса SQL и получить соответствующей результат.
  • for (…) in cur – Эта команда просто перебирает курсор, и получает все значения в строках и сохраняет их в данном параметре. Так как эта таблица имеет 4 колонки, есть 4 переменные, определенные внутри цикла. Т.е. идентификатор, имя, отдел и размер заработной платы.
  • print(“…”.format()) – Эта команда печати вызывается внутри цикла, которая просто выводит значение данных переменных, которые являются значением столбцов, забранным для конкретной строки в таблице сотрудников.
  • cur.close и conn.close – Наконец-то, после того, как выполнение цикла закончится, мы просто закроем курсор и соединение, которое мы создали ранее.

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

# python employee.py
100, andreyex, Sales, 53000
200, Boris, Technology, 15400
300, Anna, Technology, 13000
400, Max, Marketing, 22600
500, Roma, Technology, 21000

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 359

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

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

    Войти с помощью: 

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

    Сообщить об опечатке

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

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close