【问题标题】:Python 2.7 to MariaDB SQL errorPython 2.7 到 MariaDB SQL 错误
【发布时间】:2018-04-02 14:33:46
【问题描述】:

我正在尝试使用变量将数据插入到后续表中。以下语句是导致错误的语句:

cursor.execute("INSERT INTO %s (avg_time,max_time) VALUES (%s,%s)", (SOURCE, reav, remax))

错误是:

_mysql_exceptions.ProgrammingError: (1064, "您的 SQL 语法有错误;请查看与您的 MariaDB 服务器对应的手册 在 ''USA' (avg_time,max_time) 附近使用正确语法的版本 VALUES ('6.997','7.071')' 在第 1 行")

有人知道我哪里出错了吗?

【问题讨论】:

  • 您使用什么库进行连接?问题在于您如何插入表名,但在我知道您正在使用的库之前我无能为力
  • 我完全是编程新手,但我有一个导入语句:import MySQLdb --- 这意味着库是 MySQLdb,对吧?
  • 你确定表名可以用%s给出吗?
  • @SzabolcsDombi in psycopg2 你可以使用AsIs 函数,但我不确定MySQLdb 是否有这样的变体
  • @SzabolcsDombi 你是正确的。 SQL 不喜欢将表名作为变量。我将整个 SQL 命令保存为 python 中的 str 变量,并将该变量传递给 cursor.execute() 函数。有效。谢谢大家!

标签: python sql


【解决方案1】:

改变这个:

cursor.execute("INSERT INTO %s (avg_time,max_time) VALUES (%s,%s)", (SOURCE, reav, remax))

到这里:

cursor.execute("INSERT INTO %s (avg_time,max_time) VALUES (%%s,%%s)" % SOURCE, (reav, remax))

找到here

虽然这似乎很容易使用表名进行 SQL 注入,因为它使用的是字符串格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多