SQLAlchemy执行原生sql防止sql注入

在使用Python的SQLAlchemy执行原生SQL语句时,可以使用参数绑定来防止SQL注入。
使用参数绑定可以将SQL语句和参数分离开来,SQLAlchemy会自动将参数进行转义和编码,从而避免SQL注入攻击。

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建数据库连接
engine = create_engine('mysql+pymysql://user:password@localhost/dbname', echo=True)

# 创建Session
Session = sessionmaker(bind=engine)
session = Session()

# 执行原生SQL语句,使用参数绑定
result = session.execute("SELECT * FROM mytable WHERE id=:id", {"id": 1})

# 处理查询结果
for row in result:
    print(row)

在上面的例子中,我们使用了execute()方法执行了一个原生的SQL查询语句,并使用参数绑定来传递查询参数。在SQL语句中,我们使用了:id的形式来表示参数,然后将参数和对应的值传递给execute()方法的第二个参数,{"id": 1}。SQLAlchemy会自动将参数进行转义和编码,从而避免SQL注入攻击


值得注意的是, 使用ORM进行查询时, SQLAlchemy会自动将参数进行转义和编码,从而避免SQL注入攻击。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容