2016-09-26 128 views
-1

我想直接使用查詢的蟒蛇來更新我的數據庫,但我需要做大量的時間在不同的表:使用LOAD DATA LOCAL INFILE與動態表

def load_data(self, path, table): 
    print table 
    print path 
    cursor = self.mariadb_connection.cursor() 
    cursor.execute(" LOAD DATA LOCAL INFILE %s INTO TABLE %s" 
        " FIELDS TERMINATED BY ','" 
        " ENCLOSED BY '"'" 
        " LINES TERMINATED BY '\n'" 
        " ignore 1 lines ", 
        (path, table)) 

功能不認識第三行,當我像評論一樣,查詢不理解表。有另一種方法來做這個查詢?

+0

'''''''''''ENCLOSED BY'''「'結尾是Python字符串,你需要轉義它 – Barmar

+0

是的,這是正確的,但數據被封閉在這種方式。在此之前修改 –

+0

您需要轉義它,以便您擁有正確的Python字符串語法。 – Barmar

回答

0

下面跟隨我找到了解決辦法:

cursor = self.mariadb_connection.cursor() 
cursor.execute("LOAD DATA LOCAL INFILE % s" 
       "INTO TABLE " + str(table) + " " 
       "FIELDS TERMINATED BY ',' " 
       "ENCLOSED BY '\"' " 
       "LINES TERMINATED BY '\n' " 
       "ignore 1 lines ", 
        path) 
self.mariadb_connection.commit() 

三個報價可能是一個標準的數據庫了很好的解決,但我不知道爲什麼,當我們使用上MariaDB的查詢是不允許的動態表(使用%s調用表)。

另一件事程序只有在提交後才接受更改。

適合我的唯一解決方案就是這個。感謝您的支持。