Python Django manage.py sqlclear忽略一些表

Python Django manage.py sqlclear忽略一些表,python,django,django-models,Python,Django,Django Models,我编写了python脚本,用于在所有Django应用程序中删除表。(使用设置。已安装的应用程序) 我的django项目在运行manage.py syncdb后创建41个表,但我的脚本说只会删除40个表。因此,我检查了sqlall的结果和sqlclear的结果。我发现sqlclear省略了一个存储ManyToManyField关系的表 我知道drop database比上面的脚本简单得多。但我不明白为什么django admin或manage脚本在运行sql命令时忽略了一些表 下面的模型在运行

我编写了python脚本,用于在所有Django应用程序中删除表。(使用设置。已安装的应用程序)

我的django项目在运行
manage.py syncdb
后创建41个表,但我的脚本说只会删除40个表。因此,我检查了
sqlall
的结果和
sqlclear
的结果。我发现
sqlclear
省略了一个存储
ManyToManyField
关系的表

我知道
drop database
比上面的脚本简单得多。但我不明白为什么django admin或manage脚本在运行sql命令时忽略了一些表


下面的模型在运行
syncdb
时创建
common\u userbook\u purchasedBooks
表,但不在
sqlclear
命令中创建

class UserBook(models.Model):                       
    user = models.OneToOneField(User)
    purchasedBooks = models.ManyToManyField(Book)

(补充)因此,我正在使用另一种方法。
lqez,我想这个问题与您的本地环境有关,因为对于Django 1.3.1,Python 2.7.2

模型

from django.contrib.auth.models import User
from django.db import models

class Book(models.Model):
    name = models.CharField(max_length=10)

class UserBook(models.Model):
    user = models.OneToOneField(User)
    purchasedBooks = models.ManyToManyField(Book)
当我运行
(.env)testme$./manage.py sqlclear testapp
时,输出如下所示

sqlite3 postgresql_psycopg2 mysql 此外,您的脚本还可以使用
内省
进行一些改进:

from django.db import connection
cursor = connection.cursor()
connection.introspection.get_table_list(cursor)

[u'auth_group', u'auth_group_permissions', u'auth_message', u'auth_permission', u'auth_user', u'auth_user_groups', u'auth_user_user_permissions', u'django_content_type', u'django_session', u'django_site', u'testapp_book', u'testapp_userbook', u'testapp_userbook_purchasedBooks']

遗漏的表格的名称是什么?@SimonKagwi我附上了我的模型。感谢您的测试!我在Python2.7.1(r271:86832,2011年7月31日,19:30:53)+Django 1.3.1上得到了上述坏结果。通过全新的Django项目(相同的环境),这种症状不会再次出现。所以这看起来不取决于环境。无论如何,感谢您的发帖。在测试期间,我发现syncdb使用models.py生成sql,反之亦然,sqlclear检查数据库。也许这张桌子坏了?
BEGIN;
ALTER TABLE "testapp_userbook_purchasedBooks" DROP CONSTRAINT "userbook_id_refs_id_8bda4b0";
DROP TABLE "testapp_userbook";
DROP TABLE "testapp_userbook_purchasedBooks";
DROP TABLE "testapp_book";
COMMIT;
BEGIN;
ALTER TABLE `testapp_userbook_purchasedBooks` DROP FOREIGN KEY `userbook_id_refs_id_8bda4b0`;
DROP TABLE `testapp_userbook`;
DROP TABLE `testapp_userbook_purchasedBooks`;
DROP TABLE `testapp_book`;
COMMIT;
from django.db import connection
cursor = connection.cursor()
connection.introspection.get_table_list(cursor)

[u'auth_group', u'auth_group_permissions', u'auth_message', u'auth_permission', u'auth_user', u'auth_user_groups', u'auth_user_user_permissions', u'django_content_type', u'django_session', u'django_site', u'testapp_book', u'testapp_userbook', u'testapp_userbook_purchasedBooks']