Из программы на Python, вы можете подключиться к базе данных MySQL, чтобы получить доступ к таблицам и манипулировать данными.
Для этого, вы должны использовать одну из библиотек Python MySQL. Хотя есть некоторые из этих библиотек доступны, наиболее популярной и стабильной является библиотека mysql-connector-python.
Библиотека mysql-connector-python использует API-интерфейсы, которые совместимы со спецификацией API базы данных в Python v2.0 (PEP 249). Кроме того, эта библиотека сама по себе написана в программе Python и не имеет каких-либо других внешних зависимостей, что делает легче ее поддерживать.
В этом руководстве объясняется, как установить библиотеку mysql-connector-python. Мы также предоставили программу примера Python, который показывает, как использовать API для подключения к базе данных 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%]
В следующем примере, этот сервер имеет установку 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
Далее, давайте убедитесь, что библиотеку MySQL, мы установили действительно, и мы можем импортировать ее без какого-либо вопроса. Если следующий импорт mysql.connector не возвращает сообщение об ошибке, то это означает, что Python теперь может получить доступ к библиотеке подключения MySQL и импортировать ее без каких-либо проблем. С этого момента, вы можете начать использовать любые команды библиотеки Python MySQL и получить данные.
# python >>> import mysql.connector >>> exit();
Если вы получите следующее сообщение об ошибке, то что-то не так с установкой библиотеки Python MySQL.
>>> import mysql.connector ImportError: No module named mysql.connector
Далее, давайте быстро напишем небольшой образец программы на 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)
Следующий пример расширяет программу 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:
Ниже приведен вывод примера программы на 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