繁体   English   中英

SQLAlchemy MySQL参数化查询

[英]Sqlalchemy mysql parameterized query

我试图将表名作为变量传递到sql查询中,并使用sqlalchemy游标执行它:

from sqlalchemy.sql import text

cur = DB_ENGINE.connect()
p = cur.execute(text('select * from :table'), {'table':'person'}).fetchall()
print p

我收到此错误消息:

ProgrammingError: (_mysql_exceptions.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''person'' at line 1") [SQL: u'select * from %s'] [parameters: ('person',)]

我在哪里做错了?

占位符只能代表VALUES。 您不能将它们用于sql关键字/标识符。

如果您需要动态更改标识符,则必须自己构建查询字符串,例如

sql = "SELECT foo FROM " + var_with_table_name + "WHERE somefield = ?"

然后,您就容易受到SQL注入攻击的引导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM