2016-09-13 5 views
1

現在、人々の名前とIPのsqliteデータベースを作成しようとしています 実行したときにコードが動作するようですが、実行後に端末にSELECT * from ips;を実行するとデータが表示されませんSQLite3 ips 以下は私のコードです。それとSELECT * from ips;は私のコンピュータは、私がmain.ipsにIPSを変更しようとしているOSX 10.11.4、Pythonの3.4とSQLiteの3.14.1データが保存されないSQLite3 python3.4

を実行している

import sqlite3 as sql 
import socket 
import struct 
def iptoint(ip): 
    return str(struct.unpack("i",socket.inet_aton(ip))[0]) 


database = sql.connect("ips") 
createTable = True 
if createTable: 
    database.execute('''CREATE TABLE main.ips 
    (FIRST_NAME TEXT PRIMARY KEY NOT NULL, 
    SECOND_NAME TEXT NOT NULL, 
    IP INT32 NOT NULL);''') 

sampleIps = [("Edward","E","60.222.168.44")] 
for first,second,ip in sampleIps: 
    string = "INSERT INTO ips VALUES ('%s','%s','%s');"%(first,second,iptoint(ip)) 
    print(string) 
    #Printing the string gives me INSERT INTO ips VALUES ('Edward','E','749264444'); 
    database.execute("INSERT INTO ips VALUES ('%s','%s','%s');"%(first,second,iptoint(ip))) 

database.close() 

〜/デスクトップ/ SQLで実行されている両方と戻る

答えて

1

データベースにコミットしているようには思われません。実際にデータベースに変更を保存するには、接続を閉じる前にコミットする必要があります。

database.commit()

+1

全てのPython DBAPIの実装は自動的に取引だけでなく、sqlite3の1を開始することを指摘しておかなければ。 –

+1

ああ、ありがとう。私はdatabase.close()がデータベースにコミットすると仮定しました。 –

関連する問題