使用python和sql插入整个列表

lymgl2op  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(337)

我正在用insert into在数据库中插入数据
主要的问题是,我插入了大约170k个数据点,我循环了这样一个代码:

for row in data:
   SQL='''INSERT INTO Table
       VALUES ({},{},{})
   '''.format(row[0],row[1],row[2])
   cur.execute(SQL)
cur.commit()
cur.close()
con.close()

这个代码非常慢,有没有更快的方法呢?
我在想是否有办法一次插入一整列矩阵数据。

kokeuurv

kokeuurv1#

试试这个。基本上你可以用 executemany() 方法。

import mysql.connector

mydb = mysql.connector.connect(
  .....
)
mycursor = mydb.cursor()

val = []
for row in data:
   val.append((row[0],row[1],row[2]))

sql = "INSERT INTO table (x,y,z) VALUES (%s, %s, %s)"

mycursor.executemany(sql, val)

mydb.commit()
polhcujo

polhcujo2#

支持可能因dbms而异(您没有指定),但是您可以使用准备好的语句,使用dbms的 paramstyle 字符串,并将行列表传递给 executemany() 方法。请参阅https://www.python.org/dev/peps/pep-0249/#cursor-方法

相关问题