我从mysql复制到mdb,遇到了一个奇怪的问题。我有个问题
cur.execute("""UPDATE SIGN_INVENTORY SET DISTRICT=?, COUNTY=?, CITY=?, ROUTE_ID=?, NEXT_INSPECTION_DATE=?, INSP_FREQ=?, GPS_LATITUDE=?, GPS_LONGITUDE=?,
FABRICATOR=?, CONTRACTOR=?, DATE_ERECTED=?, DATE_LAST_MODIFIED=?, BRIDGE_ID=?, STATE_PLANE=?, BEGIN_NODE=?, BEGIN_OFFSET=?,
SPAN_LENGTH=?, NUMBER_SIGNS=?, TOTAL_SIGN_AREA=?, WALKWAY_LENGTH=?, STRUCTURE_TYPE=?, MESSAGE_TYPE=?, VMS_TYPE=?, MATERIAL_TYPE=?,
CHORD_TYPE=?, POLE_TYPE=?, FOUNDATION_TYPE=?, LAST_INSPECTOR=?, LMOD_USERID=?, LMOD_DATE=?, LMOD_TIME=?
WHERE STRUCTURE_NUMBER=?""", (row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10],
row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20],
row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30],
row[31], row[0]))
我明白了
'HY000', 'The SQL contains 31 parameter markers, but 32 parameters were supplied'
如果我去掉最后一行
'HY000', 'The SQL contains 32 parameter markers, but 31 parameters were supplied'
两个数据库中的列完全相同。我在其他多个地方做了非常相似的查询,它们工作得很好。
最佳答案
我想出来了。在mysql中,日期字段存储如下
datetime.datetime(2002, 7, 22, 0, 0)
这导致参数计数中断。我需要将值强制转换为char,就像这样
cast(NEXT_INSPECTION_DATE as char)