如果我有以下代码:为什么我不能建立一系列方法? (method1.method2.method3)
import sqlite
sqlite.connect('tmp.db').cursor().close()
我收到以下错误信息:
Traceback (most recent call last):
File "searchengine2.py", line 13, in ?
sqlite.connect('tmp.db').cursor().close()
File "/usr/lib64/python2.4/site-packages/sqlite/main.py", line 280, in close
if self.con and self.con.closed:
ReferenceError: weakly-referenced object no longer exists
但是,如果我以下列方式修改代码:
import sqlite
x1 = sqlite.connect('tmp.db')
x2 = x1.cursor()
x3 = x2.close()
一切都很好。为什么?
@马克,良好的诊断,但移动到弱裁判选择在pysqlite发行说明历史上是有据可查的:很简单,用光标必须连接强引用,但当然有时保持连接活着对程序员'的愿望,所以决定使用弱裁判 - 这里没有神秘;-)。 – 2009-09-27 00:17:00
我其实没有抬头为何/是否使用弱引用任何硬数据。感谢您确认我的怀疑:) – 2009-09-27 02:03:41