当前位置:  开发笔记 > 编程语言 > 正文

如何判断Python SQLite数据库连接或游标是否已关闭?

如何解决《如何判断PythonSQLite数据库连接或游标是否已关闭?》经验,为你挑选了1个好方法。

假设您有以下代码:

import sqlite3

conn = sqlite3.connect('mydb')
cur = conn.cursor()
# some database actions
cur.close()
conn.close()
# more code below

如果我稍后尝试使用conncur对象,我怎么能告诉它们已关闭?我找不到.isclosed()方法或类似的东西.



1> bernie..:

你可以在try, except声明中包装:

>>> conn = sqlite3.connect('mydb')
>>> conn.close()
>>> try:
...   resultset = conn.execute("SELECT 1 FROM my_table LIMIT 1;")
... except sqlite3.ProgrammingError as e:
...   print e
Cannot operate on a closed database.

这依赖于特定于sqlite3的快捷方式.


该方法是理智的,但避免做一个`SELECT*FROM mytable`,而你可以做一个更轻的`SELECT one_column FROM mytable LIMIT 1`.前者是非常低效的,你有一个非小型数据库.
@AntoineP.您将SQLite与其他数据库混淆.SQLite完成的工作量没有差异.它不会预先计算查询的所有结果 - 相反,它可以为第一个结果行提供最少量的工作.第二个结果行只有在您要求时才会计算出来.因此限制没有效果.无论如何,更好的查询是不依赖于模式的查询 - 例如PRAGMA user_version.
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有