Python connection.cursor()在Django 1.6中是线程安全的吗?

Python connection.cursor()在Django 1.6中是线程安全的吗?,python,django,cursor,multiprocessing,django-database,Python,Django,Cursor,Multiprocessing,Django Database,Django 1.6中的AFAIK在请求之间共享游标,并在需要时打开新连接。但是,我在文档中找不到关于connection.cursor()方法如何工作以及如何在不同进程中使用connection.cursor()方法的任何信息 我看到的大多数代码都不会关闭从connection.cursor()返回的cursor对象,所以我假设Django在请求完成时会自动关闭从connection.cursor()返回的cursor对象,但是如果我在另一个进程中调用connection.cursor()呢?

Django 1.6中的AFAIK在请求之间共享游标,并在需要时打开新连接。但是,我在文档中找不到关于connection.cursor()方法如何工作以及如何在不同进程中使用connection.cursor()方法的任何信息


我看到的大多数代码都不会关闭从connection.cursor()返回的cursor对象,所以我假设Django在请求完成时会自动关闭从connection.cursor()返回的cursor对象,但是如果我在另一个进程中调用connection.cursor()呢?我应该在终止进程时关闭该游标,还是游标的包装函数自动终止自身?

线程安全取决于db连接实现,有关可能的情况,请参阅:

threadsafety:
Integer常量,说明接口支持的线程安全级别。可能的值为:

threadsafety  Meaning
0             Threads may not share the module.
1             Threads may share the module, but not connections.
2             Threads may share the module and connections.
3             Threads may share the module, connections and cursors.
例如,MySQL、PostgreSQL和Oracle:

>>> import MySQLdb
>>> MySQLdb.threadsafety
1
>>> import psycopg2
>>> psycopg2.threadsafety
2
>>> import cx_Oracle
>>> cx_Oracle.threadsafety
2
因此,似乎没有django支持的DB连接在游标级别上是线程安全的


通常,游标是用方法关闭的,即当垃圾回收时,或者当线程正常终止时(与终止时相反,因为守护进程线程可能结束)。我回忆起在特定平台上处理游标时的一些错误,即oracle著名的ORA-01000太多游标错误的一些问题。快速谷歌搜索揭示了Jython,但我很确定我在CPython也有问题。另请参见

谢谢!我在线程池中运行了多个
cursor.execute()
,缺少一些插入