2013-02-28 56 views
1

我有以下查詢如何將多個值插入MYSQL?

INSERT INTO `min01_aggregated_data_800` (`datenum`,`Timestamp`,`QFlag_R6_WYaw`) VALUES ('734970.002777778','2012-04-11 00:04:00.000','989898') ON DUPLICATE KEY UPDATE `datenum`=VALUES(`datenum`); 
INSERT INTO `min01_aggregated_data_100` (`datenum`,`Timestamp`,`QFlag_R6_WYaw`) VALUES ('734970.002777778','2012-04-11 00:04:00.000','989898') ON DUPLICATE KEY UPDATE `datenum`=VALUES(`datenum`); 
INSERT INTO `min01_aggregated_data_300` (`datenum`,`Timestamp`,`QFlag_R6_WYaw`) VALUES ('734970.002777778','2012-04-11 00:04:00.000','989898') ON DUPLICATE KEY UPDATE `datenum`=VALUES(`datenum`); 

我使用mysql.connector包的數據插入到MySQL

self.db = mysql.connector.Connect(host = self.m_host, user = self.m_user, password = self.m_passwd, \ 
     database = self.m_db, port = int(self.m_port)) 
self.con = self.db.cursor(cursor) 

self.con.execute(query) 
self.db.commit() 
self.db.close() 
self.con.close() 

但我發現了以下錯誤Use multi=True when executing multiple statements

我試着在這種情況下使用multi=True我沒有得到任何異常,但數據不會被插入到MySQL中。我怎樣才能插入多行?

+1

用戶'在列,並在for循環做'self.con.execute(for'循環查詢)'where查詢是1行的插入查詢 – avasal 2013-02-28 10:53:11

回答

0

看到我三個選項:

  1. 發送每個查詢到DB分開:

    [...] 
    self.con.execute(query1) 
    self.con.execute(query2) 
    self.con.execute(query3) 
    [...] 
    
  2. [刪除,因爲它不適用於此]

  3. ,我不然而,非常熟悉這個multi=True;有可能有一個解決方案反覆調用self.con.nextset()。根據文檔,這隻適用於多個結果集,但也可能需要多個查詢請求。

+0

第二個解決方案對我不好,因爲我插入到不同的表中。 – 2013-02-28 11:51:33

+0

@iUngi Ouch,沒有看到這個。編輯。 – glglgl 2013-02-28 11:53:30

0

你有三個單獨的查詢,所以每個人應該分開運行,即:

self.con.execute(query1) 
self.con.execute(query2) 
self.con.execute(query3)