我尝试使用 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()
最佳答案
您需要在添加所有条目后执行 db.commit()
。即使更新不是事务性的,DBAPI 也会对每个更改强加一个隐式事务。
关于python - MySQL 没有给出错误,但是没有一行被填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247957/