使用动态表在python上使用LOAD DATA LOCAL INFILE

时间:2016-09-26 18:46:26

标签: python mysql

我试图直接在python上使用查询来更新我的数据库,但我需要在不同的表中做很多时间:

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))

该函数无法识别第三行,当我像注释一样,查询不理解该表。有另一种方法可以进行此查询吗?

1 个答案:

答案 0 :(得分: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()

三个引号对于标准数据库来说可能是一个非常好的解决方案,但我不知道为什么当我们使用动态表(使用%s来调用表)时,不允许在mariadb上进行查询。

程序在提交后才接受更改。

适合我的唯一解决方案就是这个。感谢您的支持。