我第一次使用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'])
答案 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。