我使用pymssql連接到Azure上的MS SQL數據庫並從CSV文件插入記錄。我已驗證連接是否成功,並且用於executemany參數的列表包含正確格式的所有數據以及正確數量的值。但是,當我運行腳本0行插入 - 但沒有錯誤引發。成功連接到Azure上的MS SQL數據庫使用pymssql,INSERT語句執行時沒有錯誤消息但插入0行
我環顧四周,看起來像大多數其他人經歷過類似的事情都缺少commit(),但這不是問題。
這是代碼。任何幫助是極大的讚賞。
with open('file.csv') as csvfile:
data = csv.reader(csvfile)
next(data)
dicts = ({'col1': line[0], 'col1': line[1], 'col3': line[2], 'col4': int(line[3]), 'col5': int(line[4]), 'col6': float(line[5])} for line in data)
to_db = ((i['col1'], i['col2'], i['col3'], i['col4'], i['col5'], i['col6']) for i in dicts)
cursor.executemany(
'INSERT INTO myTable VALUES (%s, %s, %s, %d, %d, %f)',
to_db)
print str(cursor.rowcount) + " rows inserted"
conn.commit()
編輯:如果我執行使用查詢cursor.execute(),並在查詢中包含明確的值,那麼我可以成功地將行插入到數據庫中(請參閱下面的例子)。
cursor.execute("INSERT INTO myTable VALUES ('4/18/2016','test','test',0,0,0.0)")
但是,如果我用戶cursor.executemany(操作參數)的語法,並傳遞值的列表作爲參數,然後它導致一個不正確的語法錯誤。
cursor.executemany("INSERT INTO myTable VALUES(%s,%s,%s,%d,%d,%f)",list_of_values)
我剛剛在module reference中看到只支持%s和%d。所以我認爲這可能是問題。但我如何通過浮動?
如果您嘗試在控制檯中執行像這樣的示例查詢,會發生什麼? – Ares
我可以成功地從MS SQL Server Management Studio中插入行。 – michoco
Python腳本是否說沒有行更改?數據庫中是否反映了這些變化? – Ares