Python数据库操作MySQL:pymysql、SQLAlchemy常见用法详解
本篇攻略将详细讲解Python通过pymysql和SQLAlchemy库操作MySQL数据库的常见使用方法。
pymysql
pymysql是使用Python操作MySQL数据库的最常用模块,因为它易于使用和强大的功能,下面将分别介绍安装pymysql、连接数据库、数据库操作和关闭数据库连接等核心知识。
安装pymysql
在Python环境中使用pymysql进行MySQL数据库操作,需要先安装pymysql模块。如果你使用的是Anaconda或Miniconda,可以通过以下命令进行安装:
conda install pymysql
如果你使用pip来管理Python的包,可以通过以下命令进行安装:
pip install pymysql
连接数据库
连接MySQL数据库需要指定 hostname(主机名)、username(用户名称)、password(用户密码)和database(要连接的数据库名称)。pymysql模块提供了connect()函数来连接MySQL数据库,下面是使用pymysql连接MySQL数据库的示例代码:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
数据库操作
连接到MySQL数据库后,我们就可以进行数据的增删改查操作。pymysql模块提供了cursor()方法,用于从数据库中检索数据,下面将分别介绍如何进行增删改查,以及如何提交、回滚和关闭事务的操作。
插入数据
插入数据是向数据库中添加新数据的一种方法。使用pymysql库可以使用以下示例代码向数据库中插入一条数据:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "INSERT INTO `users` (`id`, `name`, `age`) VALUES (%s, %s, %s)"
cursor.execute(sql, (1, 'Tom', 20))
conn.commit()
except:
conn.rollback()
finally:
conn.close()
查询数据
查询数据是从数据库中检索数据的一种方法。使用pymysql库可以使用以下示例代码从数据库中查询数据:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "SELECT * FROM `users`"
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
print(row)
finally:
conn.close()
更新数据
更新数据是将数据库中的现有数据替换为新数据的一种方法。使用pymysql库可以使用以下示例代码更新数据库中的数据:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "UPDATE `users` SET `age`=%s WHERE `name`=%s"
cursor.execute(sql, (25, 'Tom'))
conn.commit()
except:
conn.rollback()
finally:
conn.close()
删除数据
删除数据是从数据库中删除现有数据的一种方法。使用pymysql库可以使用以下示例代码删除数据库中的数据:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "DELETE FROM `users` WHERE `name`=%s"
cursor.execute(sql, ('Tom',))
conn.commit()
except:
conn.rollback()
finally:
conn.close()
使用事务
事务是一组可以一起执行或回滚的SQL语句。使用事务时,需要提交或回滚事务。以下是pymysql库使用事务的示例代码:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
# 开始事务
conn.begin()
sql1 = "UPDATE `users` SET `age`=%s WHERE `name`=%s"
cursor.execute(sql1, (25, 'Tom'))
sql2 = "UPDATE `users` SET `age`=%s WHERE `name`=%s"
cursor.execute(sql2, (28, 'Jerry'))
# 提交事务
conn.commit()
except:
# 回滚事务
conn.rollback()
finally:
conn.close()
关闭数据库连接
在完成操作后,需要关闭MySQL数据库连接。以下是使用pymysql库关闭MySQL数据库连接的示例代码:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "SELECT * FROM `users`"
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
print(row)
finally:
# 关闭MySQL数据库连接
conn.close()
SQLAlchemy
SQLAlchemy是另一个流行的Python数据库操作库,它支持多种数据库引擎,包括MySQL、PostgreSQL、SQLite等。下面将分别介绍连接数据库、数据库操作和关闭数据库连接等核心知识。
安装SQLAlchemy
在Python环境中使用SQLAlchemy进行MySQL数据库操作,需要先安装SQLAlchemy模块。如果你使用的是Anaconda或Miniconda,可以通过以下命令进行安装:
conda install sqlalchemy
如果你使用pip来管理Python的包,可以通过以下命令进行安装:
pip install sqlalchemy
连接数据库
使用SQLAlchemy连接MySQL数据库,需要指定MySQL连接用的URL,URL的格式如下:
dialect+driver://username:password@host:port/database
下面是使用SQLAlchemy连接MySQL数据库的示例代码:
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
数据库操作
连接到MySQL数据库后,我们接下来就可以进行数据的增删改查操作。下面将分别介绍如何进行增删改查,以及如何提交、回滚和关闭事务的操作。
插入数据
使用SQLAlchemy插入数据是向数据库中添加新数据的一种方法。使用SQLAlchemy可以使用以下示例代码向数据库中插入一条数据:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
try:
user = User(id=1, name='Tom', age=20)
session.add(user)
session.commit()
except:
session.rollback()
finally:
session.close()
查询数据
查询数据是从数据库中检索数据的一种方法。使用SQLAlchemy可以使用以下示例代码从数据库中查询数据:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
try:
users = session.query(User).all()
for user in users:
print(user.id, user.name, user.age)
finally:
session.close()
更新数据
更新数据是将数据库中的现有数据替换为新数据的一种方法。使用SQLAlchemy可以使用以下示例代码更新数据库中的数据:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
try:
user = session.query(User).filter(User.name == 'Tom').first()
user.age = 25
session.commit()
except:
session.rollback()
finally:
session.close()
删除数据
删除数据是从数据库中删除现有数据的一种方法。使用SQLAlchemy可以使用以下示例代码删除数据库中的数据:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
try:
user = session.query(User).filter(User.name == 'Tom').first()
session.delete(user)
session.commit()
except:
session.rollback()
finally:
session.close()
使用事务
使用SQLAlchemy进行事务操作,首先需要开始一个事务,然后执行一系列的数据库操作,然后再提交事务或回滚事务。以下是使用SQLAlchemy的示例代码:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
try:
session.begin()
user1 = User(id=1, name='Tom', age=20)
session.add(user1)
user2 = User(id=2, name='Jerry', age=28)
session.add(user2)
session.commit()
except:
session.rollback()
finally:
session.close()
关闭数据库连接
在完成操作后,需要关闭MySQL数据库连接。以下是使用SQLAlchemy关闭MySQL数据库连接的示例代码:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
try:
users = session.query(User).all()
for user in users:
print(user.id, user.name, user.age)
finally:
# 关闭MySQL数据库连接
session.close()
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据库操作mysql:pymysql、sqlalchemy常见用法详解 - Python技术站