Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)

  • Post category:Python

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的良好起点。使用这些技巧,你可以轻松地操作数据库并与其交互。