【问题标题】:Problem with Python and MySQLPython和MySQL的问题
【发布时间】:2011-09-01 01:08:05
【问题描述】:

我正在尝试将大型文本文件导入 MySQL 数据库。 SQL语句如下:

LOAD DATA INFILE '/tmp/epf/full/album_popularity_per_genre' 
INTO TABLE album_popularity_per_genre 
CHARACTER SET UTF8 FIELDS TERMINATED BY X'01' LINES TERMINATED BY '\n' 
IGNORE 45 LINES (export_date, storefront_id, genre_id, album_id, album_rank)

当我在phpMyAdmin 中运行它时,上面的工作有效,但是当我在 Python 中编写一个使用上述 SQL 语句的简单函数时,我得到一个错误。

这是 Python 代码,

def test():
    dbConnection = MySQLdb.connect(
    charset='utf8', 
    host='localhost', 
    user='root', 
    passwd='root', 
    db='epf')

    cursor = dbConnection.cursor()

    exStr = """LOAD DATA INFILE '/tmp/epf/full/album_popularity_per_genre' 
               INTO TABLE album_popularity_per_genre CHARACTER SET UTF8 
               FIELDS TERMINATED BY X'01' LINES TERMINATED BY '\n' 
               IGNORE 45 LINES 
               (export_date, storefront_id, genre_id, album_id, album_rank)"""

    try:
        cursor.execute(exStr)
    except MySQLdb.Warning, e:
        print "Warning %s" % (str(e))
    except MySQLdb.IntegrityError, e:     
        print "Error %d: %s" % (e.args[0], e.args[1])

    #Clean up
    cursor.close()
    dbConnection.close()

我得到的错误如下,

Warning Data truncated for column 'album_rank' at row 1

我现在的问题是,为什么原始 SQL 语句有效,但是当我尝试运行 Python 代码时,没有数据导入数据库?

【问题讨论】:

    标签: python mysql phpmyadmin load-data-infile


    【解决方案1】:

    Python DBAPI 是隐式事务性的。尝试在执行后添加dbConnection.commit()

    【讨论】:

    • 我想你的意思是dbConnection.commit()。我已经尝试过了,但我仍然遇到同样的问题。谢谢。
    • 我刚刚重新检查了数据库,您的建议确实有效。谢谢你。此外,我确实犯了一个错误警告错误。我会忽略那个警告。
    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2017-05-25
    • 2012-05-11
    • 1970-01-01
    • 2021-10-14
    • 2011-09-01
    • 1970-01-01
    • 2011-12-16
    相关资源
    最近更新 更多