SQLalchemy 核心 - 动态 SQL 查询和转义值
Sqlalchemy core - dynamic SQL query and escaping values
我正在创建动态插入查询。
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() 机制,因为我不知道 table.
中字段的名称或数量
我尝试了 MySQLdb.escape_string(),但它不支持 Unicode。
如何在转义 unicode 值中的特殊字符时进行动态 sql 插入查询?
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"
})
我正在创建动态插入查询。
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() 机制,因为我不知道 table.
中字段的名称或数量我尝试了 MySQLdb.escape_string(),但它不支持 Unicode。
如何在转义 unicode 值中的特殊字符时进行动态 sql 插入查询?
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"
})