首页 > python sql insert into报错

python sql insert into报错

In[137]: tuples
Out[137]: 
[(Timestamp('2005-01-04 00:00:00'),
  0.18032084962653375,
  0.18032084962653375,
  0.2136968072480386),
 (Timestamp('2005-01-05 00:00:00'),
  0.1951611031697977,
  0.1951611031697977,
  0.21450521134359202),
 (Timestamp('2005-01-06 00:00:00'),
  0.18996808374270246,
  0.18996808374270246,
  0.21377174410692534),
 (Timestamp('2005-01-07 00:00:00'),
  0.18775732421241292,
  0.18775732421241292,
  0.21416382056376848),
 (Timestamp('2005-01-10 00:00:00'),
  0.19266674603194708,
  0.19266674603194708,
  0.21433076019242644)]
In[138]: sql = "INSERT INTO Correlation VALUES(%s, %s, %s, %s) "
In[139]: cur.executemany(sql, tuples)
Traceback (most recent call last):
  File "C:\Users\wxyc\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3066, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-139-c1ab356bb7ad>", line 1, in <module>
    cur.executemany(sql, tuples)
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 4 parameters were supplied', 'HY000')
# 尝试插入一个
In[140]: cur.executemany(sql, tuples[0])
Traceback (most recent call last):
  File "C:\Users\wxyc\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3066, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-140-97479c6fa331>", line 1, in <module>
    cur.executemany(sql, tuples[0])
TypeError: ('Params must be in a list, tuple, or Row', 'HY000')

In[141]: type(tuples[0])
Out[141]: tuple

求问怎么解决,插入的应该是tuple呀


参考:http://stackoverflow.com/questions/9603616/the-sql-contains-0-parameter-markers-but-50-parameters-were-supplied-hy000
楼主是不是用的PyODBC来连接数据库,这上面说如果是PyODBC的话是不支持用%s来格式化executemany的


没有指定sql的列吧

【热门文章】
【热门文章】