PyMySQL
это чистый Python библиотека для подключения MySQL базу данных и выполнить SQL заявление. это MySQLdb
заменить,но отличается от последнего,PyMySQL
ненужный C Зависит от языка, поэтому более легкий и простой в установке и использовании. Основная цель этой библиотеки — передать Python Код и MySQL Взаимодействие с базой данных, например выполнение запросов, вставка данных, обновление данных, удаление данных и т. д.
Характеристики этой библиотеки в основном включают в себя следующие три пункта:
MySQLdb
сродни API для облегчения доступа пользователей MySQLdb
Мигрируйте сюда.PyMySQL
может пройти pip
Простая установка:
pip install pymysql
в использовании PyMySQL
Прежде вам необходимо подключиться к MySQL база данных. При подключении к базе данных вам обычно необходимо указать адрес хоста базы данных, имя пользователя, пароль, имя базы данных и другую информацию.
Пример:
import pymysql
# Создать соединение
connection = pymysql.connect(
host='localhost', # база адрес хоста данных
user='your_username',# база данныхимя пользователя password='your_password',# база данныхпароль database='your_dbname', # Выбранная база данных
charset='utf8mb4', # Укажите набор символов
cursorclass=pymysql.cursors.DictCursor # Возвращает данные в словарном формате
)
# Создать курсор
cursor = connection.cursor()
# Закрыть курсор и соединение
cursor.close()
connection.close()
Используйте объекты курсора для выполнения SQL-запросов и получения данных.
Пример:
try:
# Создать курсор
with connection.cursor() as cursor:
# SQL Запрос
sql = "SELECT * FROM users WHERE age > %s"
cursor.execute(sql, (25,)) # Используйте параметризованный Запрос, чтобы предотвратить SQL инъекция
# Получите результаты
results = cursor.fetchall() # Вернуть все результаты
for row in results:
print(row)
finally:
# тесная связь
connection.close()
При выполнении операции вставки вы можете использовать execute()
или executemany()
метод.
Пример:
try:
with connection.cursor() as cursor:
# SQL вставить оператор
sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
# Выполните одну вставку
cursor.execute(sql, ('John Doe', 30, 'john.doe@example.com'))
# Выполнить несколько вставок
users = [
('Alice', 25, 'alice@example.com'),
('Bob', 28, 'bob@example.com')
]
cursor.executemany(sql, users)
# Зафиксировать изменения
connection.commit()
finally:
connection.close()
Подобно вставке данных, обновление и удаление номеров выполняются с помощью SQL заявление и execute()
функция для завершения.
Пример:
try:
with connection.cursor() as cursor:
# SQL заявление обновления
sql = "UPDATE users SET email = %s WHERE name = %s"
cursor.execute(sql, ('new.email@example.com', 'John Doe'))
# Зафиксировать изменения
connection.commit()
finally:
connection.close()
Пример:
try:
with connection.cursor() as cursor:
# SQL удалить оператор
sql = "DELETE FROM users WHERE name = %s"
cursor.execute(sql, ('John Doe',))
# Зафиксировать изменения
connection.commit()
finally:
connection.close()
База данных MySQL поддерживает транзакции,PyMySQL
Автофиксация включена по умолчанию. Если вам необходимо вручную контролировать транзакции,Может Отключить автоматическую отправкуи отправьте его в нужное времяилиоткат。
Пример:
try:
# Отключить автоматическую отправку
connection.autocommit(False)
with connection.cursor() as cursor:
# SQL вставить оператор
sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
cursor.execute(sql, ('Chris', 27, 'chris@example.com'))
# Человеческая ошибка, откат теста
raise Exception("Исключение, вызванное человеком")
# совершить транзакцию
connection.commit()
except Exception as e:
print(f"Произошла ошибка: {e}")
# Откат транзакции
connection.rollback()
finally:
connection.close()
PyMySQL
Предоставляются различные типы курсоров, подходящие для разных сценариев:
DictCursor
):Возвращает результаты в словарном формате,Имена полей служат ключами.Использование разных типов курсоров может пройти cursorclass
Параметры указаны. Например:
# словарный курсор
connection = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_dbname',
charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor # использоватьсловарный курсор
)
Чтобы предотвратить атаки с использованием SQL-инъекций, обязательно используйте параметризованные запросы, а не встраивайте параметры непосредственно в строки SQL.
Пример:
# Небезопасный способ писать
sql = f"SELECT * FROM users WHERE name = '{name}'" # легко привести к SQL инъекция
# безопасный способ написать
sql = "SELECT * FROM users WHERE name = %s"
cursor.execute(sql, (name,))
PyMySQL
Обработка распространенных ошибок в может пройти перехватывает исключение для завершения:
import pymysql
try:
connection = pymysql.connect(host='localhost', user='root', password='', database='test_db')
cursor = connection.cursor()
except pymysql.MySQLError as e:
print(f"база данные Соединение не удалось: {e}")
executemany()
Пакетная вставка, уменьшение базы Количество взаимодействий для данных.
DBUtils
или SQLAlchemy
предоставлено пулом соединенийоптимизироватьбаза данных Многоразовость соединений.
SSCursor
Потоковый курсор позволяет избежать одновременной загрузки всех данных в память.
PyMySQL
представляет собой легкий и простой в использовании Python библиотека, подходящая для Python Программисты и MySQL взаимодействовать с базой данных. С его помощью вы сможете эффективно выполнять SQL Запрашивайте, вставляйте, обновляйте и удаляйте операции с данными, а также пользуйтесь преимуществами расширенных функций, таких как поддержка транзакций и управление курсором.