【问题标题】:Python Error in syntax with MySQLMySQL 语法中的 Python 错误
【发布时间】:2014-08-04 12:19:23
【问题描述】:

这是我的脚本

 cur.execute("CREATE TABLE +dnes+ (Id INT PRIMARY KEY AUTO_INCREMENT, \
                 Name VARCHAR(25))")

我正在尝试将变量 dnes 放入此查询中。变量是字符串。 它不工作。它说:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+dnes+ (Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))' at line 1")

我哪里错了?

【问题讨论】:

  • 是什么让您认为在字符串中添加加号会在 Python 中插入变量?你不能只发明语法。
  • 我以为它合并了字符串

标签: python mysql


【解决方案1】:

您没有使用字符串连接; + 是字符串的一部分,而不是 Python 语法。

你可能打算这样做:

cur.execute("CREATE TABLE " + dnes + " (Id INT PRIMARY KEY AUTO_INCREMENT, "
            "Name VARCHAR(25))")

您可以改用字符串格式:

cur.execute("CREATE TABLE {0} (Id INT PRIMARY KEY AUTO_INCREMENT, "
            "Name VARCHAR(25))".format(dnes))

如果您需要创建使用特殊字符或保留字或仅由数字组成的表名,则需要引用该名称:

cur.execute("CREATE TABLE `{0}` (Id INT PRIMARY KEY AUTO_INCREMENT, "
            "Name VARCHAR(25))".format(dnes))

请参阅Schema Object Names documentation

【讨论】:

  • 是的,我的意思是这个!谢谢:) 最后一个问题。我的变量看起来: dnes = time.strftime('%d%m%Y') A Pythons 说 _mysql_exceptions.ProgrammingError: (1064, “你的 SQL 语法有错误;请查看与你的 MySQL 服务器版本相对应的手册在 '040814 (Id INT PRIMARY KEY AUTO_INCREMENT,Name VARCHAR(25))' at line 1") 附近使用的正确语法)
  • @Tomas:天哪,你为什么一开始就尝试使用日期字符串作为表名?这些不是有效的标识符,不是没有额外的引用。
猜你喜欢
  • 2018-06-08
  • 2016-08-05
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多