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()すべてのエントリを追加した後に実行する必要があります。更新がトランザクションではない場合でも、DBAPI はすべての変更に対して暗黙的なトランザクションを課します。

于 2012-11-06T09:24:45.607 に答える