【问题标题】:Data load infile_ python and Qfiledialog数据加载infile_python和Qfiledialog
【发布时间】:2012-06-20 00:17:45
【问题描述】:

您好,我想使用“加载数据 Infile”将数据从 excel 文件或 .txt 导入数据库,但我的文件路径包含“\”,Mysql 不接受女巫

要清楚这是我的 PYTHON 代码:

def parcourir(self):
        fi=QFileDialog.getOpenFileName(self)
        self.Pathfile.setText(fi)

def chargeFile(self):        
        try:
            fiche=open(self.Pathfile.text(),'r')
        except IOError :
            QtGui.QMessageBox.warning(self,"erreur","fichier nontrouvé")
        connection = MySQLdb.connect (host = "localhost", user = "root", passwd = "", db = "lexique")
        cursor = connection.cursor()
        query="LOAD DATA INFILE 'self.Pathfile.text()' INTO TABLE tbl_lexique FIELDS TERMINATED BY ',' ENCLOSED BY '\"'LINES TERMINATED BY '\n'"
        cursor.execute( query )
        connection.commit()
        ...................

【问题讨论】:

  • 该查询真的是您想要运行的吗?

标签: python excel load qfiledialog


【解决方案1】:

您可能应该考虑使用参数化查询:

query="""
    LOAD DATA INFILE '%s' INTO TABLE tbl_lexique 
    FIELDS TERMINATED BY '%s' 
    ENCLOSED BY '%s' 
    LINES TERMINATED BY '%s'
    """

# you can also try converting your windows
# path to a posix path
path = self.Pathfile.text().replace('\\', '/')
cursor.execute(query, (path, ',', '"', '\n'))

【讨论】:

  • 感谢您的帮助,但我的 sql 语法仍然有错误
  • 当我在 phpmyadmin 上执行相同的查询时它可以工作,所以我猜语法没有问题
  • @AzizaCheikhna:可能是 windows vs posix 路径。试试我刚刚做的更新。
  • 不,它已经是 posix 路径,反正我尝试了最后一次更新,但仍然有同样的问题
  • @AzizaCheikhna:你能否用实际的错误输出更新你的问题,也许你的变量的值?此外,如果您的文件的路径包含“\”,那么它要么不是 posix 路径,要么是命名中带有空格的路径
【解决方案2】:

现在终于可以工作了 :) 我刚刚提出了这个查询:

query = "LOAD DATA INFILE '%s' " % self.Pathfile.text()
query += " INTO TABLE tbl_lexique FIELDS TERMINATED BY ',' ENCLOSED BY '\\\"' LINES TERMINATED BY '\\n'" 
cursor.execute( query )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多