sqlite3.Connection类继承,提交不生效
这是我第一次通过类的继承来使用sqlite3,但我遇到了一个问题:我没有收到任何错误提示,但我执行的查询却没有被保存。我把我的代码简化了一下。
import sqlite3 as lite
class BaseModel(lite.Connection):
def __init__(self, **args):
lite.Connection.__init__(self, **args)
self.cur = self.cursor()
def execute(self, query):
self.cur.execute(query)
class Model(BaseModel):
def __init__(self, **args):
BaseModel.__init__(self, **args)
def _new_(self):
queries = []
queries.append(' '.join(['CREATE TABLE IF NOT EXISTS tb1',
'(id INTEGER PRIMARY KEY,',
'column1 TEXT,',
'column2 INT)']))
for q in queries:
self.execute(q) # execute the queries
self.commit() # write changes to db
def tables(self):
query = 'SELECT name FROM sqlite_master WHERE type="table" ORDER BY name'
results = self.execute(query)
return results#.fetchall()
if __name__ == '__main__':
model = Model(database='test.db')
model._new_()
# Test Fails because the queries aren't being saved in the db
# see Model.__new__ for details
tables = model.tables() # get all tables
print 'Tables Created:'
if tables:
for t in model.tables():
print '\t%s' % str(t[0])
else: print tables
1 个回答
2
你需要调用self.commit()
:
self.commit() # write changes to db
如果没有()
,你只是引用了这个方法,而没有真正去执行它。
接下来,你的execute()
函数没有返回任何东西:
def execute(self, query):
return self.cur.execute(query)