Python SQLAlchemy基本操作和常用技巧(包含大量实例, 非常好)
引言
SQLAlchemy是一种流行的SQL工具,它可以帮助Python开发者在Python中轻松地操作数据库。它实际上是Python中最流行的SQL工具之一,并且其API简单易用。
在本教程中,我们将介绍SQLAlchemy的一些基本操作和常用技巧,并提供一些有用的示例。
基本操作
连接到数据库
要连接到数据库,我们需要使用create_engine函数创建一个引擎对象。此函数需要一个连接字符串,该字符串可以指定要连接的数据库和其他选项,例如用户名和密码。
from sqlalchemy import create_engine
engine = create_engine("mysql+mysqlconnector://{user}:{password}@localhost/{database}")
在上面的代码中,我们使用了MySQL作为数据库,并根据需要替换了用户、密码和数据库名称。
创建表
使用SQLAlchemy可以轻松创建表。首先,我们需要定义一个表,这通常是使用类来完成的。然后,我们将这个类传递给Base.metadata.create_all()函数,以便在数据库中创建表。
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
在上面的代码中,我们定义了一个名为“User”的类,该类表示数据库中的用户表。该表将包含id、name和age字段。接下来,我们调用Base.metadata.create_all(engine)函数来创建用户表。
插入记录
要向表中插入记录,我们需要创建一个新对象并将其添加到会话中。最后,我们需要调用commit()函数以将更改保存到数据库中。
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
user1 = User(name='Alice', age=25)
user2 = User(name='Bob', age=30)
session.add(user1)
session.add(user2)
session.commit()
在上面的代码中,我们创建了两个名为“user1”和“user2”的对象,并将它们添加到会话中。最后,我们调用了commit()函数以将更改保存到数据库中。
查询记录
要查询数据库中的记录,我们可以使用query()函数。这个函数可以通过指定一个类来指定查询对象。然后,我们可以在查询对象中指定过滤条件。
users = session.query(User).filter(User.age > 25)
for user in users:
print(user.name, user.age)
在上面的代码中,我们从User中查询年龄大于25岁的用户。然后,我们迭代查询结果,输出用户的名称和年龄。
常用技巧
进行事务处理
有时我们需要在执行多个操作时使用事务处理。这可以确保所有操作在同一个事务中进行,并且如果其中任何一个操作失败,所有操作都将回滚。
from sqlalchemy.orm import sessionmaker
from sqlalchemy.exc import IntegrityError
Session = sessionmaker(bind=engine)
session = Session()
try:
user1 = User(name='Alice', age=25)
user2 = User(name='Bob', age=30)
session.add(user1)
session.add(user2)
session.commit()
except IntegrityError:
session.rollback()
在上面的代码中,我们尝试向用户表添加两个新用户。在这种情况下,如果其中一个用户的id已经存在于表中,将会触发IntegrityError异常。如果发生异常,会话将回滚并撤销所有更改。
执行原始SQL查询
有时候,我们需要使用原始SQL查询来执行复杂的操作。在这种情况下,我们可以使用execute()函数执行SQL查询,并处理返回的结果。
from sqlalchemy import text
result = engine.execute(text("SELECT name, age FROM users WHERE age > :age"), age=25)
for row in result:
print(row['name'], row['age'])
在上面的代码中,我们使用text()函数来创建一个包含原始SQL查询的文本对象。然后,我们将这个文本对象传递给execute()函数,并使用参数age = 25替换查询中的占位符。最后,我们迭代查询结果并输出所有年龄大于25岁的用户。
实例
插入多条记录
有时,我们需要向数据库中插入多条记录。在这种情况下,我们可以使用迭代器来将记录添加到会话中,并且只在循环结束后调用commit()函数。
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
users = [
User(name='Alice', age=25),
User(name='Bob', age=30),
User(name='Charlie', age=35)
]
for user in users:
session.add(user)
session.commit()
在上面的代码中,我们使用一个包含所有要插入的用户的列表。然后,我们迭代这个列表,并将每个用户添加到会话中。最后,我们调用commit()函数以将更改保存到数据库中。
更新记录
要更新数据库中的记录,我们可以使用会话对象的query()函数查询要更新的记录,然后使用update()函数对记录进行更新。
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
user = session.query(User).filter_by(name='Alice').first()
user.age = 26
session.commit()
在上面的代码中,我们从User中查询名为“Alice”的用户,然后将其年龄更新为26岁。最后,我们调用commit()函数以将更改保存到数据库中。
结论
在本教程中,我们介绍了SQLAlchemy的一些基本操作和常用技巧。我们讨论了如何连接到数据库、创建表、插入记录以及查询记录。我们还讨论了如何执行事务处理和原始SQL查询。最后,我们提供了两个实例,展示了如何插入多条记录和更新数据。
如果你想在Python中使用SQLAlchemy操作数据库,那么这些基本操作和常用技巧将为你提供有关如何使用SQLAlchemy的良好起点。使用这些技巧,你可以轻松地操作数据库并与其交互。