SQLAlchemy执行原生sql防止sql注入

2023-04-09  本文已影响0人  微凉_半夏

在使用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注入攻击。

上一篇 下一篇

猜你喜欢

热点阅读