gpt4 book ai didi

mysql-5.6 - cursor.query( 'select * from %s;' , ('thistable' ,) ) 抛出语法错误 1064 : . ..near ' ' thistable' ' at

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:45 25 4
gpt4 key购买 nike

MySQLdb:cursor.query('select * from %s;', ('thistable',))

最终应为:“从该表中选择*”

实际上最终是:“select * from 'thistable'”

数据库自然会抛出语法错误:...near ' 'thistable' ' at ...

它的行为就好像数据转换器将字符串的引号包含在字符串中一样,即字符串是“'thistable' ”而不是 'thistable'。对此的任何和所有帮助都深表感谢。我在查询中注意到的一件事是脚本的字符集是utf8,而数据库服务器和数据库是latin1。这可能是我的问题吗?

操作系统:os X Sierra

Python:3.6

MySQL:5.3.6

mysql-connector-c:6.1.11

最佳答案

构建动态 SQL 和构建参数化查询之间存在差异。

一般来说,参数化查询允许您插入值进行比较/输入,但不能插入数据库对象。因此,您的应用程序代码假定 %s 是带引号的文字,而不是数据库对象。

如果您需要动态添加数据库对象(表、列、过程名称等),您可能需要首先构建查询字符串,并使用占位符(如 %s)来表示您需要传入的实际参数。

在这种情况下,ypercubeᵀᴹ 建议直接使用字符串'select * from thistable'。如果您需要对多个表运行相同的查询,请循环遍历表列表,构建如下字符串:

queryString = 'SELECT * FROM ' + currTable

关于mysql-5.6 - cursor.query( 'select * from %s;' , ('thistable' ,) ) 抛出语法错误 1064 : . ..near ' ' thistable' ' at,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46717146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com