我感到困惑,为什么蟒蛇需要光标对象。 我知道JDBC和存在的数据库连接是非常直观的,但在Python我很困惑与光标对象。 另外我怀疑的是什么资源释放方面cursor.close()和connection.close()时函数之间的差异。
Answer 1:
光标模式不是特定于Python的,但在频繁的数据结构, 数据库本身 。
根据底层的实现有可能产生几个光标分享到数据库的连接相同。 关闭光标应该释放关联到查询资源,包括从数据库中从未获取(或牵强,但不使用)任何结果,但不会排除对数据库本身的连接,这样你就可以得到一个新的光标在同一个数据库无需再次进行身份验证。
Answer 2:
正如其他人更不用说了,一个Connection()
是网络连接到数据库中,而且只有真正的用途是返回游标。 PEP-249 ,其中被指定DBAPI 2.0,没有明确界定究竟连接或光标是,也没有什么的close()
上的每个方法必须做; 只有<module> .connect()
必须返回的实例<module> .Connection
,即<module> .Connection.cursor()
必须返回的实例<module> .Cursor
,和<module> .Cursor.execute()
应该调用提供的声明,并返回结果行。 特别是,它没有定义<module> .Connection.execute()
虽然具体的实施方式可以自由地实现它们作为扩展。
根据这些扩展名可能是不明智的,虽然,因为这意味着你不会有便携式代码。 DBAPI使得这两个电平的要求,因为具有不具有中间对象的连接上的执行可能难以在某些数据库。
Answer 3:
Connection对象与数据库的连接,关闭,当你做谈话的数据库都在一起。 Cursor对象是在从查询的结果集的迭代器。 当你与结果集进行关闭的。
文章来源: difference between cursor and connection objects