为什么记录不会保存在sqlite3中?

时间:2014-01-15 05:21:57

标签: python database sqlite

我第一次使用sqlite。我之前使用过Xammp。现在我有一个场景。每次我运行下面的代码时,记录不只是附加在表的末尾,而是表创建为新的,因此它就像一个控制台一样工作。

任何人都能告诉我这里的错误吗?

import sqlite3

db = sqlite3.connect('test.db')
db.row_factory = sqlite3.Row

db.execute('drop table if exists test')
db.execute('create table test (t1 text,i1 text)')
db.execute('insert into test (t1, i1) values (?, ?)',('xyzs','51'))
cursor = db.execute('select * from test')

for row in cursor:
    print(row['t1'],row['i1'])

2 个答案:

答案 0 :(得分:1)

此行删除旧表:

db.execute('drop table if exists test')

这个创建了一个新表:

db.execute('create table test (t1 text,i1 text)')

这应该解释你的问题。删除这两行你会没事的 - 但首先单独创建表

答案 1 :(得分:1)

首先,您需要在游标上执行命令,而不是连接本身。其次,您需要提交交易:

import sqlite3

db = sqlite3.connect('test.db')
db.row_factory = sqlite3.Row
cur = db.cursor() # getting a cursor

cur.execute('drop table if exists test')
cur.execute('create table test (t1 text,i1 text)')
db.commit() # commit the transaction, note commits are done
            # at the connection, not on the cursor

cur.execute('insert into test (t1, i1) values (?, ?)',('xyzs','51'))
db.commit()

cursor = cur.execute('select * from test')

for row in cursor:
    print(row['t1'],row['i1'])

请查看documentation。一旦您开始使用Python中的其他数据库,这将帮助您,因为它们都遵循相同的API。