0

我尝试使用 MySQLdb 在数据库中填充表。它没有给出任何错误,并且曾经发出警告

main.py:23: Warning: Data truncated for column 'other_id' at row 1
  cur.execute("INSERT INTO map VALUES(%s,%s)",(str(info[0]).replace('\n',''), str(info[2].replace('\n','').replace("'",""))))

所以我认为它工作正常。但是,当它完成并且我进行了行数时,结果发现没有添加任何内容。为什么没有将数据添加到数据库中?代码如下

def fillDatabase():
    db = MySQLdb.connect(host="127.0.0.1", 
                         user="root", 
                         passwd="", 
                         db="uniprot_map") 

    cur = db.cursor() 
    conversion_file = open('idmapping.dat')
    for line in conversion_file:
        info = line.split('\t')
        cur.execute("INSERT INTO map VALUES(%s,%s)",(str(info[0]).replace('\n',''), str(info[2].replace('\n','').replace("'",""))))

def test():
    db = MySQLdb.connect(host="127.0.0.1", 
                         user="root", 
                         passwd="", 
                         db="uniprot_map") 

    cur = db.cursor() 
    cur.execute("SELECT COUNT(*) FROM map")
    rows = cur.fetchall()

    for row in rows:
        print row

def main():
    fillDatabase()
    test()
4

1 回答 1

4

db.commit()添加所有条目后,您需要执行 a 。即使更新不是事务性的,DBAPI 也会对每个更改强加一个隐式事务。

于 2012-11-06T09:24:45.607 回答