我有一個簡單的Python數據庫應用程序與SQLite。我寫了一個簡單的程序來創建數據庫並插入一些值。但是,數據庫已創建,但未插入新值,但我不知道爲什麼:插入SQLite文件Python - 不起作用
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
def CreateTable():
try:
connection = lite.connect(':memory:')
with connection:
cursor = connection.cursor()
sql = 'CREATE TABLE IF NOT EXISTS Authors' + '(ID INT PRIMARY KEY NOT NULL, FIRSTNAME TEXT, LASTNAME TEXT, EMAIL TEXT)'
cursor.execute(sql)
data = '\n'.join(connection.iterdump())
with open('authors.sql', 'w') as f:
f.write(data)
except lite.Error, e:
if connection:
connection.rollback()
finally:
if connection:
cursor.close()
connection.close()
def Insert(firstname, lastname, email) :
try:
connection = lite.connect('authors.sql')
with connection:
cursor = connection.cursor()
sql = "INSERT INTO Authors VALUES (NULL, %s, %s, %s)" % (firstname, lastname, email)
cursor.execute(sql)
data = '\n'.join(connection.iterdump())
with open('authors.sql', 'w') as f:
f.write(data)
except lite.Error, e:
if connection:
connection.rollback()
finally:
if connection:
cursor.close()
connection.close()
CreateTable()
Insert('Tibby', 'Molko', '[email protected]')
爲什麼你有兩個不同的數據庫連接?一個是內存中,另一個是文件。 – 2015-04-06 11:24:17
,因爲我需要在已創建的數據庫中附加一些值。那可能嗎? – yak 2015-04-06 11:24:46
然後只需打開一個連接到*那個數據庫*。 SQLite數據庫文件不像文本文件,你不會追加到它們。將它留給SQLite來管理文件中的數據。 – 2015-04-06 11:25:14