我正在尝试使用 mysqlDB,但我遇到了一个对我来说根本没有意义的问题。
我的问题集中在以下执行语句中的表名上。
这有效:
c.execute(u'''insert into AIN0 (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) values (%s, %s, %s, %s)''',
(str(date), int(raw), int(formula), 0.1))
这些都不起作用:
c.execute(u'''insert into %s (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) values (%s, %s, %s, %s)''',
(str("AIN0"), str(date), int(raw), int(formula), 0.1))
c.execute(u'''insert into 'AIN0' (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) values (%s, %s, %s, %s)''',
(str(date), int(raw), int(formula), 0.1))
问题是,这两个不工作的都会导致相同的错误消息:
ProgrammingError: (1064, "您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 ''AIN0' (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) 值附近使用的正确语法 ('2011'在第 1 行")
请注意,在错误消息中,AIN0 被单引号包围,即使在我使用字符串插值运算符插入它的情况下也是如此。可以肯定的是,我在工作案例中故意犯了一个语法错误,以便查看 MySQL 正在查看的内容。
ProgrammingError:(1064,“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确使用的语法”)) AIN0(Date_Info、Raw_Data、Calculation_Formula、Calculated_Data)值(“201”在第 1 行")
果然,在 MySQL 正常工作的那个中,AIN0 没有被单引号包围,这让我相信这是导致错误的原因。
当我使用字符串插值时,为什么在我的字符串周围插入单引号以及如何让它们停止?