将文本文件导入mysqldb

时间:2012-10-10 04:42:12

标签: python mysql text import

对于当前的赋值,我必须使用python将2个.txt文件导入MySQLdb。我遇到了很大的麻烦。我尝试了各种方法,但根本无法做到。

过去几天我搜索了这个网站和其他许多网站,我根本无法让这个工作。每当我试图让另一个人的解决方案适应我自己的代码时,它就会失败 - 所以我想我应该直接为我自己的代码寻求帮助。

这是我到目前为止所做的:

import MySQLdb 

# connect to database
mydb = MySQLdb.connect("localhost","root","0dy5seuS","cars_db")

# define the function
def data_entry(cars_for_sale):

# cursor creation
    cursor = mydb.cursor()

#load the file 'cars_for_sale.txt' into the database under the table 'cars_for_sale'

    sql = """LOAD DATA LOCAL INFILE 'cars_for_sale.TXT'
        INTO TABLE cars_for_sale
        FIELDS TERMINATED BY '\t'
        LINES TERMINATED BY '\r\n'"""

    #execute the sql function above
    cursor.execute(sql)

    #commit to the database
    mydb.commit()

    #call data_entry(cars_for_sale) function
    data_entry(cars_for_sale)

    mydb.close()

我几乎无法绕过它,任何帮助都会受到赞赏。 我现在从测试功能获得以下反馈:

  

尝试:       data_entry(“cars_for_sale”)期望:       插入到cars_for_sale的行数是7049   的 * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *** 文件“主要”,第4行,在失败示例中:       data_entry(“cars_for_sale”)引发异常:

     

追踪(最近一次呼叫最后一次):

     

文件“C:\ Python27 \ lib \ doctest.py”,第1289行,在__run中           compileflags,1)在test.globs

中      

文件“”,第1行,in           data_entry( “cars_for_sale”)

     

data_entry中的文件“E:/ Uni / 104 / Portfolio 2 / MediumTask_DataStatistics / question / TEST2_data_statistics.py”,第270行   data_entry(cars_for_sale)*它重复这最后一部分几百/千次“

     

以下几行是在上面的重复错误之后。

     

文件“C:\ Python27 \ lib \ site-packages \ MySQLdb \ connections.py”,行   243,在游标返回(cursorclass或self.cursorclass)(self)
  文件“C:\ Python27 \ lib \ site-packages \ MySQLdb \ cursors.py”,第51行,中   来自weakref导入代理的 init RuntimeError:调用Python对象时超出了最大递归深度

我知道这是一个无限递归,虽然我不知道如何阻止它。 感谢

1 个答案:

答案 0 :(得分:1)

以下代码重现您的错误"RuntimeError: maximum recursion depth exceeded while calling a Python object"

def data_entry(cars_for_sale):
    data_entry(cars_for_sale)

这里不需要递归(无论如何都使用不正确)。

  

我知道这是一次无限递归,虽然我不知道如何阻止它。

只需删除data_entry功能中的data_entry来电。