繁体   English   中英

预定义函数,用于格式化Python中用于SQL的字符串

[英]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.

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