连接和游标主要实现 PEP 249中描述的Python DB API标准——除非它涉及到事务处理。
如果你不熟悉Python DB-API,注意cursor.execute()中的SQL语句使用占位符"%s",而不是直接在SQL中添加参数。如果你使用这种方法,底层数据库的库会在必要时自动转义你的参数。
还要注意Django 使用"%s"占位符,而不是 SQLite Python 使用的"?"占位符。这是一致性和可用性的缘故。
Changed in Django 1.7.
PEP 249并没有说明游标是否可以作为上下文管理器使用。在Python 2.7之前,由于魔术方法查询(Python ticket #9220)中的一个意想不到的行为,游标可以用作上下文管理器。Django 1.7 明确添加允许使用游标作为上下文管理器的支持。
将游标作为上下文管理器使用:
with connection.cursor() as c: c.execute(...)
等价于:
c = connection.cursor() try: c.execute(...) finally: c.close()