1

これが私のコードです(現在):

conn = sqlite3.connect(db)
conn.text_factory = str  #bugger 8-bit bytestrings
cur = conn.cursor()

reader = csv.reader(open(csvfile, "rU"), delimiter = '\t')
for Number, Name, Message, Datetime, Type in reader:

    # populate subscriber table
    if str(Number)[:1] == '1':
        tmpNumber = str(Number)[1:]
        Number = int(tmpNumber)
    cur.execute('INSERT OR IGNORE INTO subscriber (name, phone_number) VALUES (?,?)', (Name, Number))

cur.close()
conn.close()

csvファイル(ファイル内でタブ区切り)のサンプルデータを次に示します。

Number       Name        Message         Date/Time               Type
16665551212  Jane Doe    message one     11/23/2011 6:34:44 AM   Incoming
16665551212  Jane Doe    message two     11/23/2011 4:53:21 PM   Incoming

コードはエラーなしで実行され、データベースには何も書き込まれません。どうしてこれなの?

4

1 に答える 1

4

変更をコミットする必要があります。conn.commit()

トランザクションをまったく使用しない場合、つまり「自動コミット」モードで作業する場合isolation_level=Noneは、呼び出しで使用しconnect()ます。ただし、これは通常は悪い考えです。

于 2012-06-12T20:22:03.207 に答える