基于SQLAlchemy实现操作MySQL并执行原生sql语句的完整攻略如下:
安装SQLAlchemy
首先需要安装SQLAlchemy,可以通过pip命令安装:
pip install sqlalchemy
连接到MySQL数据库
使用SQLAlchemy连接到MySQL数据库的代码如下:
from sqlalchemy import create_engine
# 连接MySQL数据库, username 和 password 分别为账户名和密码, database 为数据库名, host 为主机名
engine = create_engine("mysql+pymysql://username:password@host/database?charset=utf8mb4")
其中,使用了pymysql的驱动,可以通过路径方式指定,如 "mysql+pymysql://",后面依次为登录账号、密码、主机名和数据库名。
执行原生SQL语句
可以通过以下代码实现在MySQL数据库中执行原生SQL语句:
connection = engine.connect() # 获取数据库连接
# 执行SELECT查询语句并获取结果集
result_set = connection.execute("SELECT * FROM table_name")
# 执行INSERT、UPDATE或DELETE语句并提交事务
transaction = connection.begin()
connection.execute("INSERT INTO table_name (id, name) VALUES (1, 'John')")
transaction.commit()
connection.close() # 关闭数据库连接
在执行原生SQL语句后,可以得到查询结果集,或执行INSERT、UPDATE或DELETE操作,然后使用commit()方法提交事务,并关闭数据库连接。
示例说明
下面给出两个示例说明。
示例1:查询用户信息
假设有一张users表,包含以下字段:id、name、age、email。现在需要查询所有用户信息,可以使用以下代码:
connection = engine.connect()
result_set = connection.execute("SELECT * FROM users")
users = result_set.fetchall() # 获取所有查询结果
# 打印查询结果
for user in users:
print(f"User(id={user[0]}, name={user[1]}, age={user[2]}, email={user[3]})")
connection.close()
其中,使用fetchall()方法获取所有查询结果,然后遍历结果集打印查询结果。
示例2:添加用户信息
假设需要向users表中添加一个新用户,可以使用以下代码:
connection = engine.connect()
# 开始事务
transaction = connection.begin()
try:
# 执行INSERT语句
connection.execute(
"INSERT INTO users (name, age, email) VALUES (:name, :age, :email)",
{"name": "Amy", "age": 27, "email": "amy@example.com"}
)
# 提交事务
transaction.commit()
except:
# 事务回滚
transaction.rollback()
raise
connection.close()
在执行INSERT语句前,调用connection.begin()方法开启事务,在执行INSERT语句后,调用transaction.commit()方法提交事务。如果在执行INSERT语句时发生错误,可以调用transaction.rollback()方法进行事务回滚。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于SQLAlchemy实现操作MySQL并执行原生sql语句 - Python技术站