2016-11-08 52 views
0

背景

此命令將記錄成功添加5個字段(所有的字符串),以表的記錄:的Python mysql.connector:具有時間戳

import mysql.connector 
... 
add_scan = ("INSERT INTO tblScanpoint " 
       "(f1, f2, f3, f4, f5) " 
       "VALUES (%s, %s, %s, %s, %s)") 
data_scan = ('AAAabc', 'AA', '4321', 'SEA', '3') 
cursor = cnx.cursor() 
cursor.execute(add_scan, data_scan) 
cnx.commit() 
... 

第六字段的數據類型是時間戳。

>>> cursor.execute(add_scan, data_scan) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 551, in execute 
    self._handle_result(self._connection.cmd_query(stmt)) 
    File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 490, in cmd_query 
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query)) 
    File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 395, in _handle_result 
    raise errors.get_exception(packet) 
mysql.connector.errors.ProgrammingError: 1064 (42000): 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 'when) VALUES ('CCCabc', 'AA', '4321', 'SEA', '3', '2016-11-07 20:46:56.35')' at line 1 

TIMESTAMP UPLOAD詳情

這些字符串進行了修改,以適應第六時間戳字段:

stamp = '2016-11-07 20:46:56.35' 
add_scan = ("INSERT INTO scanpoint " 
       "(f1, f2, f3, f4, f5, when) " 
       "VALUES (%s, %s, %s, %s, %s, %s)") 
data_scan = ('CCCabc', 'AA', '4321', 'SEA', '3', stamp) 

錯誤信息

從嘗試更新的所有六個字段錯誤拋出的錯誤是因爲它是否被提供了一個字符串? 尋求糾正措施建議。聰明的例子表示讚賞。

回答

1

這就是問題when您的列名是關鍵字/保留字。你需要使用backtique來逃避它。請參見下面的

(f1, f2, f3, f4, f5, when) 
         ^.... problematic column name 

這應該被轉義

(f1, f2, f3, f4, f5, `when`) 
+0

優秀美中不足的是:大加讚賞。 – gatorback