[英]Pre-defined function to format strings in Python to be used in SQL
首先我是法国人所以,如果你发现我的信息有任何错误,请不要犹豫告诉我! :)
这是我的问题:我正在制作一个Python函数,构建SQL请求,在我的数据库中插入一个大字符串(HTML代码到网页)。
您可能知道,SQL对您使用的字符串有一些要求。 例如,你不能使用' I'm a developper'
句子,因为'''的东西。
您是否知道是否存在任何预定义的函数来修改链以确保我可以在SQL请求中使用它?
我也问这个因为我不知道字符串的所有要求都没有问题。
我希望我已经清楚了,如果我没有,请告诉我! 祝你今天愉快。
编辑:我在Python 3.4.3 EDIT2:我正在使用MySQL
这是一个非常广泛的问题,我认为你应该改进它。
至于SQL的良好实践,首先需要:
确保您使用正确的库(以及最新的)取决于您的情况(MySQL,Oracle,SQLite等)
逃脱字符串。 该库通常具有此功能。 您也可以使用format
或%
。
测试,单元测试或至少是手动测试......我通常做的原型是首先生成SQL语句并打印它。 然后我复制这个语句并直接测试它到SQL命令行。 这样你就可以确定它适用于SQL。 然后从那里,你需要用\\
来转义特殊字符。 然而,第二点将涵盖这一点。
最后,您希望将代码包装在try / catch
语句中,以便控制失败。
如果它仍然不起作用,那么好的,有点hacky, .replace()
会。 一个例子是: .replace("'", "\\'")
。 确保您可以标准化您的输入。
编辑:如果覆盖边缘情况,语句的长度无关紧要。
编辑2:如果您使用的是mysql-python, 请使用MySQLdb.escape_string(statement)
https://dev.mysql.com/doc/connector-python/en/connector-python-api-cext-escape-string.html
我相信你只需要逃避角色,这应该有效。
my_sql_string = 'this my \'word\' with escaped character'
另外,你应该从sqlalchemy查看“text”对象: http : //docs.sqlalchemy.org/en/latest/core/tutorial.html#using-textual-sql
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.