📜  Python SQLAlchemy – 删除多行(1)

📅  最后修改于: 2023-12-03 14:46:04.266000             🧑  作者: Mango

Python SQLAlchemy – 删除多行

通过Python SQLAlchemy,我们可以轻松地连接到数据库并执行各种操作,包括删除多行。

确定要删除的行

首先,我们需要确定要从数据库中删除哪些行。为此,我们可以使用SQLAlchemy的“过滤”功能。例如,假设我们在一个名为“users”的表中想要删除所有姓为“Smith”的用户,我们可以使用以下代码:

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://username:password@host:port/database_name')
Session = sessionmaker(bind=engine)

# 创建映射类和元数据
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True, autoincrement=True)
    first_name = Column(String(50))
    last_name = Column(String(50))

# 连接到数据库并获取所有姓为"Smith"的用户
session = Session()
results = session.query(User).filter(User.last_name == 'Smith').all()

# 打印结果以确保我们获取了正确的行
for user in results:
    print(user.id, user.first_name, user.last_name)

通过这个查询,我们只获取了姓为“Smith”的用户,可以根据需要修改查询条件。

删除行

我们现在有了要删除的行,我们可以使用SQLAlchemy的删除功能删除它们。具体来说,我们可以使用Session的delete()方法删除每个行。例如,以下代码将删除上一节中选定的所有行:

for user in results:
    session.delete(user)
session.commit()

这将从数据库中删除由上一节查询选择的每一行。

完整代码

以下是完整的Python SQLAlchemy代码,用于从数据库中删除所有姓为“Smith”的用户:

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://username:password@host:port/database_name')
Session = sessionmaker(bind=engine)

# 创建映射类和元数据
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True, autoincrement=True)
    first_name = Column(String(50))
    last_name = Column(String(50))

# 连接到数据库并获取所有姓为"Smith"的用户
session = Session()
results = session.query(User).filter(User.last_name == 'Smith').all()

# 打印结果以确保我们获取了正确的行
for user in results:
    print(user.id, user.first_name, user.last_name)

# 删除所有姓为"Smith"的用户
for user in results:
    session.delete(user)
session.commit()

以上就是使用Python SQLAlchemy删除多行的介绍。通过这个例子,您可以了解如何连接到数据库,选择需要删除的行,并使用SQLAlchemy来执行实际删除操作。