2016-09-13 2 views
1

В настоящее время я пытаюсь создать базу данных sqlite имен людей и ip Пока мой код работает, когда я запускаю его, данные не отображаются, когда я запускаю SELECT * from ips; в терминале после запуска SQLite3 ips Ниже мой код. И это и SELECT * from ips; работают в ~/Desktop/SQLДанные не сохраняются 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() 

Мой компьютер работает под управлением OSX 10.11.4, Python 3.4 и SQLite 3.14.1

Я попытался изменить IP-адреса в main.ips и back

ответ

1

Это не похоже, что вы делаете запись в базу данных. Прежде чем закрыть соединение, вам необходимо зафиксировать его, чтобы сохранить ваши изменения в базе данных.

database.commit()

+1

Следует отметить, что все реализации DBAPI питона автоматического запуска транзакции, а не только sqlite3 один. –

+1

А, спасибо большое. Я предположил, что database.close() будет привязан к базе данных. –

Смежные вопросы