【发布时间】:2016-09-09 14:50:28
【问题描述】:
我有一个带有 Tkinter 的 python 脚本,我想在后台打印在 Sqlite 数据库中执行的每个查询(只是为了好玩):
我有一个数据库对象:
import sqlite3
class Database():
def __init__(self):
try:
sqlite3.enable_callback_tracebacks(True)
self.connection = sqlite3.connect('databases.sqlite')
self.cursor = self.connection.cursor()
self.cursor.execute( """ CREATE TABLE .... """ )
except:
print('error in database connection')
def __del__(self):
self.cursor.close()
还有一个任务对象
class Task():
def __init__(self, name="no_name"):
self.database = Database()
data = {"name" : name }
self.database.cursor.execute("INSERT INTO tasks(name) VALUES(:name)" , data )
self.database.connection.commit()
当我这样做 new_task = Task('Hello') 时,我希望在 CLI 中自动输出如下:
* executed in 4ms :
INSERT INTO tasks (name) VALUES('Hello');
有什么想法吗?提前谢谢!
【问题讨论】:
-
附带说明,我不确定是否使用
__del__关闭光标。也许更重要的是,你close连接了吗?也许更好地让方法close..做self.cur.close(); self.conn.close()。你是否需要在Task的__init__方法中使用self(看起来,好像这个类没有更多内容?只是摆脱自我。也许甚至Task太多了,函数可能就足够了see。