【问题标题】:Receiving an InterfaeError 0 in Python using mysqldb使用 mysqldb 在 Python 中接收 InterfaeError 0
【发布时间】:2018-06-05 05:32:53
【问题描述】:

尝试在某些 python 代码中执行查询时,我收到一个 InterfaceError: (0,'')。我将在下面发布我正在使用的代码。

 def insert_into_table(schema, table, connection, filename = 'pathToAnInputFile'):
        x = connection.cursor()
        with open(filename, 'rb') as csvfile:
            reader = csv.reader(csvfile, delimiter=',', quotechar='"')
            next(reader)
            for line in reader:
                query = "INSERT INTO {0}.{1} (field1, field2, field3) VALUES ('{2}', '{3}', '{4}')".format(table, schema, line[0], line[1], line[2])
                print query
                x.execute(query)
                conn.commit()

        conn.close()

import MySQLdb
import csv as csv
conn = MySQLdb.connect("localhost", "nottheusername", "notthepassword", db="adb") 

insert_into_table('atablename', 'adb', conn)

这是我得到的输出

INSERT INTO adb.atablename (field1, field2, field3) VALUES ('dogs', '小狗','2017 年 11 月 21 日') -------------------------------------------------- ------------------------- InterfaceError Traceback(最近一次调用最后一次) 在 () ----> 1 insert_into_table('atablename', 'adb', conn)

<ipython-input-24-02df4bf9bbdb> in insert_into_table(schema, table, connection, filename)
      8             query = "INSERT INTO {0}.{1} (RMS_CLASS_NM, campaign, ad_group) VALUES ('{2}', '{3}', '{4}')".format(table,

架构,行[0],行[1],行[2]) 9 打印查询 ---> 10 x.execute(查询) 11 conn.commit() 12

C:\Users\braddavi\AppData\Local\Continuum\Anaconda2\lib\site-packages\MySQLdb\cursors.pyc

在执行(自我,查询,参数) 224 例外: 225 exc,值 = sys.exc_info()[:2] --> 226 self.errorhandler(self, exc, value) 第227章 228 如果不是 self._defer_warnings: self._warning_check()

C:\Users\braddavi\AppData\Local\Continuum\Anaconda2\lib\site-packages\MySQLdb\connections.pyc

在默认错误处理程序中(解析参数失败) 34德尔连接 35 if isinstance(errorvalue, BaseException): ---> 36 引发错误值 37 如果错误类不是无: 38 引发错误类(错误值)

InterfaceError: (0, '')

我已经搜索了有关此特定错误的信息,似乎它通常与创建全局游标有关,而不是在使用它的函数中创建本地游标,但这不是在这种情况下的问题 - 或者至少如果是的话,这对我来说并不明显。

我还应该指出,如果我从打印查询行中打印出查询并直接在 mysqldb 终端中执行它,它会毫无困难地执行并插入数据。

如果有人可以提供帮助,将不胜感激。

祝大家节日快乐。 布拉德

【问题讨论】:

    标签: python mysql-python


    【解决方案1】:

    我不确定这是否可以作为完整答案,但我找到了解决方案。我没有在我试图将数据推送到表中的同一函数中打开 using csv.reader,而是将其分解为两个单独的函数。第一个读取 CSV 文件并将每一行存储为列表,然后将所有列表存储为列表列表。然后将该列表列表传递给不同的例程以将数据插入表中。我不知道为什么这会解决问题,除非它与 csv reader 和 mysqldb 有一些奇怪的不兼容。无论哪种方式,如果有人遇到此问题,这可能是适合您的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多