Django db表删除

时间:2010-08-25 07:50:43

标签: django database

使用什么命令可以从特定应用程序的django数据库中删除表/只有一个表? 我确实找到了各种各样的东西,但没有找到摆脱桌子的方法。

同时我在这里。

我创建模型并点击syncdb然后我有表格。 如果我想更新/添加这些表,我是否会遇到问题?

3 个答案:

答案 0 :(得分:4)

最好的办法是将django-south安装在你的机器上。

如果您使用pip,请执行pip install django-south

这使您可以向前和向后迁移数据。

这非常方便,特别是如果您需要更新表和新表等。

检查出来。

向应用添加南方就像python manage.py schemamigration appname --initial

一样简单

在模型中进行更改并运行以下python manage.py schemamigration appname --auto

创建数据迁移文件后,它会告诉您现在可以迁移数据了。

只需使用python manage.py migrate appname

即可

http://south.aeracode.org/docs/about.html

希望这有帮助

答案 1 :(得分:0)

如果要删除表,这是在您尝试删除的特定应用程序的模型文件中完成的,没有命令,您只需进入该文件并将其删除然后重新运行syncdb ,对于你的另一个问题,答案是一样的..每个app文件夹都应该有一个名为“models.py”的文件,这里是指定了等于表格的模型及其字段,你只需编辑它就可以进行任何更改。

答案 2 :(得分:0)

def reset():
    import install
    from django.db.models import get_models
    removed_tables = []
    exceptions = [] 
    for model in get_models():
        if model.__name__ not in ('User','Session','Group','Permission'):
            try:
                model.objects.all().delete() # So we can remove the table without complaints from the database server.
                CURSOR.execute('DROP TABLE %s' % model._meta.db_table)
                print "Dropped table %s from model %s" % (model._meta.db_table, model.__name__)
            except Exception as e:
                exceptions.append([model._meta.db_table, str(e)])
                continue
            removed_tables.append(model._meta.db_table)
    print "Removed %s tables" % len(removed_tables)
    syncdb()
    install.install() # A function that leads to the creation of my default data