在Django shell中如何从数据库中删除列?
以下是场景:在Django shell中如何从数据库中删除列?,django,django-models,Django,Django Models,以下是场景: 我没有访问psql提示符的权限 我确实可以访问python manage.py shell或shell\u plus 是否可以使用Django内部构件删除该数据库的一列?我知道这在理论上是可能的 欢迎有任何见解 这不应该是一个挑战,正如Cezar指出的那样,python manage.py dbshell应该像psql那样调用提示符 如果没有其他办法,您仍然可以通过它,因为Django允许从shell执行任意(原始)SQL。下面的代码段应该可以做到这一点: from djang
- 我没有访问
提示符的权限李>psql
- 我确实可以访问
或python manage.py shell
shell\u plus
欢迎有任何见解 这不应该是一个挑战,正如Cezar指出的那样,
python manage.py dbshell
应该像psql
那样调用提示符
如果没有其他办法,您仍然可以通过它,因为Django允许从shell执行任意(原始)SQL。下面的代码段应该可以做到这一点:
from django.db import connection
cursor = connection.cursor()
cursor.execute("alter table table_name DROP column column_name")
您有权访问表所在的models.py文件吗?然后您可以删除该字段并运行
python manage.py makemigrations
,python manage.py migrate
您知道后果吗?在python shell中删除列的目的是什么?如果你只是删除了一列,但在模型中保留了相应的字段,那么稍后它会咬你,你会尖叫。按照@Sam的建议执行:python manage.py makemigrations
和python manage.py migrate
。在部署应用程序时,这还有一个优点,即您可以轻松地从迁移中生成数据库结构。如果您可以访问python manage.py shell
,那么您应该可以访问python manage.py dbshell
。如果没有,我想知道在哪种情况下可以访问第一个,但不能访问后一个。