Sqlalchemy核心 - 动态SQL查询和转义值

时间:2015-08-06 12:47:23

标签: python python-2.7 sqlalchemy flask-sqlalchemy

我正在创建一个动态插入查询。

    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插入查询?

1 个答案:

答案 0 :(得分:2)

4年前我想听到的答案-

sql = 'INSERT INTO some_table (guid, name) VALUES (:guid_val, :name_val)'

db_session.execute(sql, {
  "guid_val": uuid.uuid4(),
  "name_val": "Hello world"
})