В тази статия ще обсъдим как да се свържете с MySQL с помощта на Python. Python е един от най-продуктивните и широко използвани езици за програмиране, използвани днес. Неговият прост и елегантен синтаксис го прави идеален за нови програмисти, докато опитните програмисти се наслаждават на обширния списък от налични модули и функционалности.
MySQL е стабилна SQL-базирана система за управление на релационни бази данни с отворен код, която се използва в много софтуерни програми и уеб сървъри. Тази статия има за цел да покаже как да се свържете, за да използвате Python, за да се свържете с MySQL и да изпълнявате някои основни задачи.
Защо да използвате Python за свързване с MySQL?
Може би се питате защо тази информация е важна? Най-добрият отговор е, че тези два компонента се допълват брилянтно! Способността на Pythons да манипулира данни, използвайки информация от източник, е ненадмината. MySQL или MariaDB съдържа данните, които могат да бъдат манипулирани от Python. Използването на тези два фактора за подобряване и допълване само увеличава общата синергия между тях.
Стъпка 1. Инсталиране на съединителния модул
Нека започнем с инсталирането на съединителния модул. Първата стъпка в свързването на MySQL с Python е да инсталирате модула Pip Python. Ако вече нямате инсталиран pip, подробни инструкции за инсталиране на pip под множество операционни системи можете да намерите в Liquid Web Knowledge Base. След като инсталираме pip, трябва да инсталираме mysql-connector-python драйвер с помощта на следната команда.
root@host:~# pip install mysql-connector-python
Collecting mysql-connector-python
Downloading mysql_connector_python-8.0.21-cp27-cp27mu-manylinux1_x86_64.whl (16.0 MB)
|################################| 16.0 MB 13.7 MB/s
Collecting protobuf>=3.0.0
Downloading protobuf-3.12.2-cp27-cp27mu-manylinux1_x86_64.whl (1.3 MB)
|################################| 1.3 MB 17.0 MB/s
Requirement already satisfied: setuptools in /usr/local/lib/python2.7/dist-packages (from protobuf>=3.0.0->mysql-connector-python) (44.1.1)
Collecting six>=1.9
Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
Installing collected packages: six, protobuf, mysql-connector-python
Successfully installed mysql-connector-python-8.0.21 protobuf-3.12.2 six-1.15.0
В примера по-горе pip проверява за други модули, които може да изисква драйверът на mysql-connector-python, които след това ще бъдат инсталирани, ако е необходимо.
Стъпка 2. Конектор за импортиране
Следващата стъпка е да импортирате mysql-connector-python модул, използвайки тази команда във вашия код.
import mysql.connector
Тази команда казва на Python да зареди и активира всички функции и обекти, свързани и използвани от конекторния модул на MySQL.
Стъпка 3. Свържете MySQL към сървъра
Следващата ни стъпка е да извикаме mysql.connector.connect() метод за създаване на връзка със сървъра.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’
)
Обикновено, когато комуникираме с MySQL база данни, ние използваме MySQLcursor обект (който е част от модула mysql-connector-python). Мислете за този обект като тип CLI (интерфейс на командния ред), където можем да въвеждаме SQL заявки, използвани за взаимодействие със сървъра. Тази комуникация се осъществява с помощта на метода на курсора (cursor =db.cursor() ), извикване на db обекта, който създадохме в последната стъпка с метода за свързване:
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’'
)
cursor = db.cursor()
Обект db.cursor ни позволява да изпълняваме SQL заявки. Тази заявка връща обект, който можем да повторим с цикл for така.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’'
)
cursor = db.cursor()
cursor.execute("show databases")
for x in cursor:
print(x)
Съществува вече съществуваща база данни, която беше настроена в предишен урок за KB за SQL изгледи. Той съдържа информация за измислена серия от автомобили. Използвайки горния скрипт, резултатите ще изглеждат така:
# python mysql-test.py
(u'information_schema',)
(u'races',)
(u'sys',)
Можем да използваме други команди с текущия курсор (db.cursor() ), за да взаимодействат с тази база данни. Тук изтегляме списък с таблиците и изгледите от една и съща база данни.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password='password'
)
cursor = db.cursor()
cursor.execute("use races")
cursor.execute("show tables")
for x in cursor:
print(x)
The output results look like this.
# python mysql-test.py
(u'all_finishes',)
(u'drivers',)
(u'finishes',)
(u'race_winners',)
(u'races',)
(u'standings_leader',)
(u'tracks',)
Забележка:„u“ пред резултата показва, че това е Unicode низ. Вмъкване на данни с MySQL Cursor Object
Сега, когато можем да извлечем структурата на базата данни, можем да използваме обекта курсор, за да изпълним други команди. Имаше раздел, в който пилотите за състезателния сезон бяха вмъкнати в базата данни. Това беше направено с помощта на тази SQL заявка.
insert into drivers (name,car_number) values
('Buddy Baker',28),
('Dale Earnhardt Jr.',8),
('Ricky Rudd',88);
За да изпълним същата SQL заявка с помощта на Python, ние просто предаваме този низ към метода за изпълнение на нашия курсор . Добър метод за практикуване на използването на това е да зададете променлива като текст на заявката и след това да извикате execute върху обекта на курсора. Също така трябва да инструктирате mysql да запише промените, като извикате db.commit() по този начин.
db = mysql.connector.connect(
host='localhost',
user=’username’,
password='password'
)
cursor = db.cursor()
cursor.execute("use races")
query = "insert into drivers (name,car_number) values ('Buddy Baker',28),('Dale Earnhardt Jr.',8),('Ricky Rudd',88);"
cursor.execute(query)
db.commit()
Резултатите:
id | име | номер на автомобил |
1 | Бъди Бейкър | 28 |
2 | Дейл Ърнхард младши | 8 |
3 | Рики Ръд | 88 |
Когато вмъкнем няколко реда, интерфейсът предлага метода “executemany” , което ни позволява да създадем масив от стойности за вмъкване и низ, специално форматиран със символа %s, заместващ стойностите от масивите. Този пример е идентичен с предишното вмъкване:
db = mysql.connector.connect(
host='localhost',
user=’username’,
password='password'
)
cursor = db.cursor()
cursor.execute("use races")
query = "insert into drivers (name,car_number) values ('Buddy Baker',28),('Dale Earnhardt Jr.',8),('Ricky Rudd',88);"
cursor.execute(query)
db.commit()
Стойностите от масива „драйвери“ се предават една по една в оператора „sql“ и след това се предават в „executemany() “
Използване на Select
Подобно на други SQL изрази, можем да използваме обекта курсор, за да изпълним селекти. След избор курсорът получава няколко нови метода, включително fetchall() и fetchone() . Fetchall() връща списък с всички резултати. Всеки резултат е списък със съответните колони в реда, в който са избрани. Методът fetchone() връща следващия резултат от набора от резултати.
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
Резултати:
(u'Buddy Baker', 28)
(u'Dale Earnhardt Jr.', 8)
(u'Ricky Rudd', 88)
Ако искаме един по един резултат, можем да използваме fetchone()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchone()
print(results)
Резултати:
(u'Buddy Baker', 28)
Актуализиране и изтриване на данни
Подобно на командата вмъкване, командите за изтриване и актуализиране използват обект на курсора и трябва да извикат db.commit(); в противен случай те са подобни на други SQL команди.
Актуализиране :
sql = "update drivers set car_number = 1 where car_number = 88"
cursor.execute(sql)
db.commit()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
(u'Buddy Baker', 28)
(u'Dale Earnhardt Jr.', 8)
(u'Ricky Rudd', 1)
Изтриване :
sql = "delete from drivers where car_number = 8"
cursor.execute(sql)
db.commit()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
(u'Buddy Baker', 28)
(u'Ricky Rudd', 1)
Заключение
И така, какви са изводите от тази статия? Използването на Python за взаимодействие с MySQL е прост и ефективен начин за манипулиране на данни по начини, които допълват всяка система.
Имате въпроси? Гордеем се, че сме най-полезните хора в хостинг™! Нашият екип за техническа поддръжка е винаги на разположение, за да помогне с всякакви въпроси, свързани с тази статия, 24 часа в денонощието, 7 дни в седмицата, 365 дни в годината.
Достъпни сме чрез нашите системи за продажба на билети на [email protected], по телефона (на 800-580-4986) или чрез LiveChat или какъвто предпочитате метод. Работим усилено за вас, за да можете да се отпуснете.