📅  最后修改于: 2023-12-03 14:47:38.996000             🧑  作者: Mango
SQLAlchemy Core是SQLAlchemy的基础版,提供了更加轻量级和低级别的API。本文将介绍如何使用SQLAlchemy Core执行删除语句。
在开始之前,需要先安装SQLAlchemy库。可以使用pip命令进行安装:
pip install sqlalchemy
接着,我们需要连接到一个数据库。这里以MySQL数据库为例,首先在MySQL中新建一个数据库和一个用户,然后授权给该用户:
CREATE DATABASE test_database;
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON test_database.* TO 'test_user'@'localhost';
接下来,在Python代码中使用以下代码连接到MySQL数据库:
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://test_user:password@localhost/test_database')
使用SQLAlchemy Core执行删除语句需要用到delete()
函数和execute()
函数。先来看一个简单的删除语句:
from sqlalchemy import delete
conn = engine.connect()
stmt = delete(table_name).where(condition)
result = conn.execute(stmt)
其中,table_name
为要删除数据的表名,condition
为删除条件。例如,要删除名为"John"的用户:
stmt = delete(users_table).where(users_table.c.name == 'John')
result = conn.execute(stmt)
如果要删除整个表中的数据,可以省略where()
条件:
stmt = delete(users_table)
result = conn.execute(stmt)
执行完删除语句后,可以使用result.rowcount
获取受影响的行数。如果要撤销删除操作,可以使用conn.rollback()
回滚事务。
在实际开发中,为了避免SQL注入攻击,我们需要使用参数化SQL语句。使用SQLAlchemy Core的参数化删除语句,只需将参数作为字典传递给delete()
函数即可:
stmt = delete(users_table).where(users_table.c.name == :name)
result = conn.execute(stmt, {'name': 'John'})
这里的:name
表示占位符,后面的字典中的name
对应了这个占位符。这样,即使用户输入了恶意的SQL语句,也不会对数据库造成影响。
本文介绍了如何使用SQLAlchemy Core执行删除语句。通过delete()
函数和execute()
函数的组合,我们可以轻松删除数据库中的数据。同时,也提醒开发者在传递参数时使用参数化语句,以避免SQL注入攻击的发生。