当前位置: 首页 > 面试题库 >

Python和MySQLdb:替换表会导致语法错误

危钱明
2023-03-14
问题内容

我需要不时动态地更改表和变量,因此我编写了这样的python方法:

    selectQ ="""SELECT * FROM  %s WHERE %s = %s;""" 
    self.db.execute(selectQ,(self.table,self.columnSpecName,idKey,))
    return self.db.store_result()

但是,这导致语法错误异常。我尝试对其进行调试,因此我将变量打印在方法中,然后手动将其填充,并且可以正常工作。所以我不确定我在做什么错?

是因为我尝试使用表的替代品吗?

另外,我该如何调试mysqldb以便将替换查询打印为字符串?


问题答案:

DB API中的参数替换仅适用于值-不适用于表或字段。您将需要使用普通的字符串替换:

selectQ ="""SELECT * FROM  %s WHERE %s = %%s;""" % (self.table,self.columnSpecName)
self.db.execute(selectQ,(idKey,))
return self.db.store_result()

请注意,值占位符有一个double-%这是初始字符串替换将其保留的位置。



 类似资料:
  • 问题内容: 我下载并遵循了MySQL 5.5.8(http://dev.mysql.com/downloads/mysql/)和MySQLdb python插件的安装说明。(http://sourceforge.net/projects/mysql- python/) 当我尝试将MySQLdb导入到python终端时,出现以下错误: 我在堆栈溢出中发现了问题4559699,并按照那里的指示进行操作

  • 我在“a-b-c”的形式下有工件id,我希望我的原型有一个像“a. b. c”这样的包。所以,我做以下几点: 但这样做会让我: [错误]无法执行目标组织。阿帕奇。专家插件:maven原型插件:3.1.2:generate(默认cli)在独立项目pom:java上。伊奥。IOException:文件名、目录名或卷标语法不正确 如果我把它取下来,一切都会好的。为什么?

  • 问题内容: 我收到错误消息 “您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以找到在第1行的“ orderr”附近使用的正确语法” -因此,我认为错误是用了两个 ‘, 但是在我的代码中我没有用 ‘ 。注意,该表实际上被命名为订购者。 问题答案: 在大多数数据库中,您无法参数化表名称之类的对象名称,在MySQL中,理论上您可以做到,因为默认情况下,MySQL Connector

  • 问题内容: 我想选择一个值到一个变量中。我试图遵循: -立即返回一些语法错误。 -返回一个整数 -不起作用,也尝试了@myvar 是否可以在存储过程或函数之外使用DECLARE? 也许我只是不了解用户变量的概念……我只是尝试过: …工作原理与预期的一样。但是,如果我一次运行每个查询,我只会得到@var NULL。 问题答案: 最后,存储过程是解决我的问题的方法。这是有帮助的:

  • 我有一个覆盆子圆周率,我用来上大学。由于我家里没有显示器,我决定用Lubuntu在我的笔记本电脑上汇编代码。

  • 我已经尝试了很多方法,以“德语”样式在JTable中显示逗号而不是点。在我的JTable类中,我编写了一个方法,用于循环传递的结果集,以填充DefaultTableModel并直接返回模型或JTable。 如果我将一个BigDecimal转换为一个字符串,用逗号替换一个点,结果将在我的JTable中正确显示-但是我的排序序列不正确,因为值将被排序为字符串而不是BigDecimal... 另一个解决