需要将一批数据插入SQL server 数据库,经过查证可以采用批量插入的方法,遇到一些坑,特记录一下
- 怎样连接数据库可以查看上一篇
- 批量插入方法如下:
sql_1= "INSERT INTO F_RNFL_MT2(ID,FYMDH,YMDH,RN,UNITNAME,COMMENTS) values(?,?,?,?,?,?)"
data =[(1, '2020-06-10 06:00', '2020-06-10 06:00', 39, 21, 0), (2, '2020-06-10 06:00', '2020-06-10 06:00', 40, 21, 0), (3, '2020-06-10 06:00', '2020-06-10 06:00', 30, 21, 0)]
data = tuple(data)
cursor =conn.cursor()
cursor.executemany(sql_1,data)
conn.commit()
坑1:
SQL Server 语句如果需要批量插入,需要使用‘?’代替’%s’,否则会报错:
Traceback (most recent call last):
File "connect.py", line 35, in <module>
cursor.executemany(sql_1,data)
pyodbc.ProgrammingError: ('The SQL contains 4 parameter markers, but 6 parameters were supplied', 'HY000')
坑2:
批量入库万一有重复的数据会报错,且REPLACE语句只适用于My SQL.