【发布时间】:2015-10-29 15:05:45
【问题描述】:
我正在创建一个动态插入查询。
sql = "INSERT INTO `" + self.db_name + "` ("
sql += ','.join(e.db_name for e in self.fields)
sql += ") VALUES ("
sql += ','.join(("'" + e.value + "'") for e in self.fields)
sql += ");"
result = s.execute(sql)
它工作正常,除了插入的值对特殊字符和 SQL 注入不安全。
我无法使用 SqlAlchemy text() 机制,因为我不知道表中字段的名称或数量。
我尝试了 MySQLdb.escape_string(),但它不适用于 Unicode。
如何在转义 unicode 值中的特殊字符的同时进行动态 sql 插入查询?
【问题讨论】:
-
如果您缩进使用 SQLAlchemy,这是 错误 方法。你有 SQLAlchemy 模型类吗?您可以动态使用它们。如果你不这样做,你也可以即时生成 SQLAlchemy 模型:docs.sqlalchemy.org/en/rel_1_0/orm/extensions/automap.html
-
您可能会使用
table()和column(),它们是Table和Column的轻量级类似物,但这有点像XY 问题。为什么不知道他们的表名等?
标签: python python-2.7 sqlalchemy flask-sqlalchemy