2014-10-10 53 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