2014-10-10 54 views
1

我试图插入一些数据到MySQL数据库使用python(pymysql连接器),我得到非常差的性能(每秒插入约10行)。该表是InnoDB,我正在使用多值插入语句并确保关闭自动提交。任何想法为什么我的插入仍然如此缓慢?从Python缓慢的MySQL插入

我最初认为autocommit未被正确禁用,但我添加了代码来测试它在每次连接期间被禁用(= 0)。

这里我举的例子代码:

for i in range(1,500): 
    params.append([i,i,i,i,i,i]) 
insertDB(params) 

def insertDB(params): 
    query = """INSERT INTO test (o_country_id, i_country_id,c_id,period_id,volume,date_created,date_updated) 
     VALUES (%s,%s,%s,%s,%s,NOW(),NOW()) 
     ON DUPLICATE KEY UPDATE trade_volume = %s, date_updated = NOW();""" 
    db.insert_many(query,params) 

def insert_many(query,params=None): 
    cur = _connection.cursor() 
    try: 
     _connection.autocommit(False) 
     cur.executemany(query,params) 
     _connection.commit() 
    except pymysql.Error, e: 
     print ("MySQL error %d: %s" % 
      (e.args[0], e.args[1])) 
    cur.close() 

还有什么可能是这个问题?上面的例子需要大约110秒的永久执行。

回答

0

不知道什么是错的,但我会尝试mysqldb和/或mysql连接器模块,看看我是否得到相同的性能数字。

+0

谢谢@panofish。我现在用sqlalchemy(我相信它使用mysqldb)试过上面的代码,并得到相同的结果。 – idubs11 2014-10-14 08:42:04

+0

酷,那么你的服务器或连接必须有错误。 – panofish 2014-10-14 13:21:54

+0

是的,这肯定是由于与我连接到服务器的延迟有关。 – idubs11 2015-03-17 13:47:31