Лучшее руководство по подключение к базе данных MySQL python3 в 2024 году. В этом руководстве вы можете изучить установка PyMySQL,Связь с базами данных,Создание таблицы базы данных,вставка базы данных,запросы к базе данных,обновление баз,делеция,Исполнительные делам,Обработка ошибок,
В этой статье мы вводим python3 использование PyMySQL подключения к базе данных, и простой CRUD.
PyMySQL для подключения к базе данных версии сервера MySQL в Python3.x, python2 в использовании MySQLdb.
PyMySQL следуют Python API базы данных спецификации v2.0 и содержит чисто-Python клиентскую библиотеку MySQL.
Перед использованием PyMySQL, нам необходимо обеспечить установленный PyMySQL.
PyMySQL Скачать: https: //github.com/PyMySQL/PyMySQL.
Если он еще не установлен, мы можем использовать следующую команду, чтобы установить последнюю версию PyMySQL:
$ pip install PyMySQL
Если ваша система не поддерживает пип команду, вы можете использовать установлены следующие компоненты:
1, с помощью команды Git, чтобы загрузить установочный пакет (вы также можете вручную скачать):
$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install
2, если вам нужно разработать номер версии, вы можете использовать завиток команду для установки:
$ # X.X 为 PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install $ # 现在你可以删除 PyMySQL* 目录
Примечание: Убедитесь , что у вас есть привилегии суперпользователя для установки модулей , описанных выше.
Процесс установки не может появиться "ImportError: Нет модуль с именем Setuptools" сообщение об ошибке, которое означает , что вы не должны установить Setuptools, вы можете получить доступ к https://pypi.python.org/pypi/setuptools найти способ установки каждой системы.
Установка Linux Пример:
$ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py
Перед подключением к базе данных, убедитесь, что следующие элементы:
Следующие примеры связи баз данных TESTDB Mysql:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("Database version : %s " % data) # 关闭数据库连接 db.close()
Реализация этого скрипта выводит результаты выглядят следующим образом:
Database version : 5.5.20-log
Если соединение с базой данных существует, мы можем использовать метод Execute () для создания таблиц для базы данных, создать таблицу сотрудников, показанную в следующем:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # 关闭数据库连接 db.close()
В следующем примере используется выполнить SQL INSERT заявление, чтобы вставить запись в таблицу EMPLOYEE:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close()
Приведенный выше пример можно записать следующим образом:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 执行sql语句 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Следующий код использует переменные для передачи параметров в SQL заявление:
rururururururururururururururururu user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) rururururururururururururururururu
Python Mysql запрос с использованием метода fetchone () для получения однократной данных с использованием метода fetchall () для получения множества данных.
Discover СОТРУДНИК таблица заработной платы (оплаты труда) поле данных больше, чем все 1000:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income )) except: print ("Error: unable to fecth data") # 关闭数据库连接 db.close()
Результаты выполнения скрипта выше следующим образом:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Данные операции обновление для обновления таблицы данных, следующие примеры TESTDB поля таблицы Секс все изменения 'M', поле AGE увеличивается на 1:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Удаление данных удаления данных для таблицы, следующий пример демонстрирует удаление данных в таблице EMPLOYEE возрастов больше, чем все данные 20:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close()
Механизм транзакций для обеспечения целостности данных.
Услуги должны иметь четыре свойства: атомарность, согласованность, изоляция, долговечность. Эти четыре свойства часто называют свойствами ACID.
Python DB API 2.0 обеспечивает два способа фиксации транзакции или отката.
# SQL删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()
Для транзакционной базы данных, программирование баз данных в Python, когда установлен курсор, автоматически начинает транзакцию базы данных невидимой.
совершить () метод для всех метода обновления курсора, откат (), чтобы откатить все операции текущего курсора. Каждый метод начал новый бизнес.
DB API определяет некоторые ошибки и отклонения от нормы функционирования базы данных В следующей таблице перечислены эти ошибки и исключения.:
ненормальный | описание |
---|---|
предупреждение | Когда есть серьезное предупреждение для запуска, например, вставка данных усекается, и так далее. Это должен быть подкласс StandardError. |
ошибка | Все остальные, кроме предупреждений классы ошибок. Это должен быть подкласс StandardError. |
InterfaceError | Срабатывает, когда модуль интерфейса базы данных имеет свою собственную ошибку (вместо базы данных ошибок) происходит. Оно должно быть подклассом Error. |
DatabaseError | Запуск и ошибки базы данных, связанных с. Оно должно быть подклассом Error. |
DataError | Когда есть произошла ошибка обработки данных при запуске, например: деление на ноль ошибок, данные вне диапазона, и так далее. Это должен быть подкласс DatabaseError. |
OperationalError | Это относится к не-контролируемых пользователем, но произошла ошибка при базе данных. Например: случайно отключен, имя базы данных не найден, то сделка не удается, ошибка распределения памяти произошла ошибка базы данных и т.п. операции. Это должен быть подкласс DatabaseError. |
IntegrityError | Целостность-ошибки, связанные, например, внешнего ключа проверки не удается, и тому подобное. Он должен быть DatabaseError подкласс. |
InternalError | Внутренняя ошибка базы данных, такие как курсор (курсор), выходит из строя, синхронизация транзакций сбой и так далее. Он должен быть DatabaseError подкласс. |
ProgrammingError | Процедурные ошибки, такие как таблицы данных (таблица) не найдена или уже существует, ошибка синтаксиса SQL заявление, номер ошибки параметров, и так далее. Это должен быть подкласс DatabaseError. |
NotSupportedError | Не поддерживается ошибка, относится к использованию функций, таких как API или база данных не поддерживает. Например, при использовании .rollback на функции объекта подключения (), но база данных не поддерживает транзакции или сделка была закрыта. Это должен быть подкласс DatabaseError. |