当前位置:  开发笔记 > 编程语言 > 正文

如何从DJango中删除SQLite3中的表?

如何解决《如何从DJango中删除SQLite3中的表?》经验,为你挑选了5个好方法。

我制作了一个模型,并运行了python manage.py syncdb.我认为在db中创建了一个表.然后我意识到我错误地创建了一个列,所以我更改了它,然后运行相同的命令,认为它会丢弃旧表,并添加一个新表.

然后我去了python manage.py shell,并尝试运行.objects.all(),它失败了,说该列不存在.

我想清除旧表,然后再次运行syncdb,但我无法弄清楚如何做到这一点.



1> Adrián Decci..:

清除应用程序就像写作一样简单:

./manage.py sqlclear app_name | ./manage.py dbshell 

然后为了重建你的表只需键入:

./manage.py syncdb


不再适用于Django 1.9+:[Django 1.9中的弃用](https://docs.djangoproject.com/en/1.9/internals/deprecation/#deprecation-removed-in-1-9)

2> Ofri Raviv..:

使用Django 1.4或更低版本时,另一种简单的方法是

python manage.py reset app_name

删除并重新创建此应用程序的模型使用的表.

这在Django 1.3中已被弃用,并且Django 1.5不再提供


重命令命令已在Django 1.3中弃用,并且不再可用于Django 1.5.请检查我的答案.

3> iamio..:

这些答案都没有显示如何删除应用中的一个表.这不是太困难.该dbshell命令将用户登录到sqlite3 shell.

python manage.py dbshell

在shell中时,键入以下命令以查看数据库的结构.这将显示数据库中的所有表名(以及表中的列名).

SELECT * FROM sqlite_master WHERE type='table';

通常,Django根据以下约定命名表:"appname_modelname".因此,实现目标的SQL查询将类似于以下内容:

DROP TABLE appname_modelname;

即使表与其他表有关系,这也应该足够了.现在您可以通过执行以下命令注销SQLITE shell:

.exit

如果再次运行syncdb,Django将根据您的模型重建表.这样,您可以更新数据库表而不会丢失所有应用程序数据.如果您遇到这个问题很多,请考虑使用South - 一个django应用程序,它将为您迁移表格.



4> George Godik..:

获取DROP语句

python manage.py sqlclear app_name

然后试试

python manage.py dbshell

并执行DROP语句

查看http://docs.djangoproject.com/en/dev/ref/django-admin/



5> Kat Russo..:

我有同样的问题.

要快速解决(如果您不关心丢失表/数据),请更正包含所需数据类型的models.py文件,删除Migration文件夹和db.SQLite3文件,

然后重新运行以下命令:

    python manage.py migrate

    python manage.py makemigrations

    python manage.py migrate

    python manage.py createsuperuser(创建管理员用户/ pswd来管理管理页面)

    python manage.py runserver

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有