【问题标题】:sqlite3 "OperationalError: near "(": syntax error" pythonsqlite3 "OperationalError: near "(": 语法错误" python
【发布时间】:2015-05-15 10:59:20
【问题描述】:

简单地说,我正在尝试制作一个 sql 数据库表并将数据输入其中。我让它以更简单的方式工作,但是当我把它放到我的脚本中时,它会导致这个错误。我希望它是我错过的一些简单的东西。任何帮助/建议将不胜感激。

conn = sqlite3.connect('Data1.db')

c = conn.cursor()

# Create table
c.execute('''CREATE TABLE Data_Output6
         (date text, output6MV real)''') 

Averages_norm = []

for i, x in enumerate(Averages):
    Averages_norm.append(x*output_factor)
    c.execute("INSERT INTO Data_Output6 VALUES (%r,%r)" %(xdates[i],Averages_norm[-1]))
conn.commit()

导致错误:

57     for i, x in enumerate(Averages):
58         Averages_norm.append(x*output_factor)
---> 59         c.execute("INSERT INTO Data_Output6 VALUES (%r,%r)"%(xdates[i],Averages_norm[-1]))
60     conn.commit()
61 

OperationalError:靠近“(”:语法错误

【问题讨论】:

  • 那么你在xdates有什么数据?
  • 另外,你为什么使用字符串插值而不是 SQL 参数?
  • 在执行之前尝试打印语句。我相信您会立即发现错误。
  • 你正在邀请 Booby Tables 喝茶...bobby-tables.com

标签: python sqlite


【解决方案1】:

简单地说,让 DB API 进行格式化:

c.execute("INSERT INTO Data_Output6 VALUES (?, ?)", (xdates[i], Averages_norm[-1]))

并参考文档https://docs.python.org/2/library/sqlite3.html 提到的地方:

改为使用 DB-API 的参数替换。

【讨论】:

  • 谢谢,这真的很有帮助。我想我太拘泥于我所知道的,而不是了解我正在使用的软件包!
猜你喜欢
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2022-12-20
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多