![]() |
1
12
直接回答,不,没有。 joshperry's answer 是一个很好的解释。 从 eugene y answer to a similar question ,
|
![]() |
2
58
大多数语言都提供了一种执行通用参数化语句的方法,python也不例外。当使用参数化查询时,支持准备语句的数据库将自动执行此操作。 在python中,参数化查询如下所示:
具体的参数化样式可能会有所不同,具体取决于您的驱动程序,您可以导入DB模块,然后执行
从 PEP-249 :
|
![]() |
3
10
在快速浏览mysqldb包的cursor对象的execute()方法(我猜是一种与mysql集成的事实上的包)之后,它似乎(至少在默认情况下)只做字符串插值和引用,而不做实际的参数化查询:
如果这不是字符串插值,那是什么? 在ExecuteMany的情况下,它实际上尝试将insert/replace作为单个语句执行,而不是在循环中执行。这就是问题所在,似乎没有什么魔力。至少在它的默认行为中没有。
编辑:哦,我刚刚意识到,模运算符可以被重写,但我觉得自己像是在欺骗和篡改源代码。没有找到覆盖项
|
![]() |
4
5
如果只关心性能,那么使用AMIT建议的SQL接口就可以工作。但是,您将失去对SQL注入的保护,而本地Python对准备好的语句的支持可能会带来这种保护。python 3具有为PostgreSQL提供准备好的语句支持的模块。对于MySQL,“ourSQL”似乎提供了真正准备好的语句支持(不像在其他模块中那样伪造)。 |
![]() |
5
5
对于那些想弄清楚的人来说, 对 可以将准备好的语句与python和mysql一起使用。只需从mysql本身使用mysql connector/python并实例化右光标: https://dev.mysql.com/doc/connector-python/en/index.html https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursorprepared.html |
![]() |
6
1
不直接相关,但 this answer 在so的另一个问题中包含“模板化”查询的语法详细信息。我想说自动逃逸是他们最重要的特征…
至于性能,请注意方法
|
![]() |
7
0
有一个解决办法! 如果您将它们放入服务器上的存储过程中,并从python这样调用它们,就可以使用它们…
下面是一个关于mysql和python中存储过程的很好的小教程。 http://www.mysqltutorial.org/calling-mysql-stored-procedures-python/ |
![]() |
RonnieT · MySQL插入双引号PHP 7 年前 |
![]() |
MBJH · 准备好的报表。executeUpdate()不影响数据库 7 年前 |
![]() |
Raptiku · 从多个数据库执行多个语句 7 年前 |
![]() |
Heratom · 准备好的报表。addBatch()添加空参数 7 年前 |
![]() |
Steve Mack · Mysqli绑定参数不工作 7 年前 |
![]() |
bem22 · 准备好的报表是这样工作的吗? 7 年前 |