在`python manage.py migrate`之后,表不显示,迁移不可见

q5lcpyga  于 2023-11-16  发布在  Python
关注(0)|答案(3)|浏览(140)

我按照Django的官方教程在https://docs.djangoproject.com/en/1.11/intro/tutorial02/中运行了python manage.py migrate。在此之后,我希望在轮询/迁移中显示一些文件,但那里只有一个空的__init__.py,当我运行sqlite3并键入.tables.schema时,没有任何输出。尽管如此,python manage.py migrate命令似乎是成功的:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

字符串
出什么事了?
编辑:
'polls',添加到我的INSTALLED_APPS。然后:

$ python manage.py makemigrations
Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Choice
    - Create model Question
    - Add field question to choice
(django) Sahands-MacBook-Pro:mysite sahandzarrinkoub$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying polls.0001_initial... OK
(django) Sahands-MacBook-Pro:mysite sahandzarrinkoub$ sqlite3
SQLite version 3.16.0 2016-11-04 19:09:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .schema
sqlite>


同样的问题。
EDIT 2:在运行python manage.py dbshell.schema.tables时,最终产生了输出。

t98cgbkg

t98cgbkg1#

首先,检查您的polls应用是否存在于settings.pyINSTALLED_APPS列表中:

INSTALLED_APPS = [
    # ...
    'polls',
]

字符串
然后尝试在执行migrate之前运行makemigrations

$ python manage.py makemigrations
$ python3 manage.py migrate

编辑:

现在,在数据库中创建了polls表,您可以通过运行$ python manage.py dbshell来访问sqlite3客户端:

$ python manage.py dbshell
sqlite> .schema


只运行sqlite3python manage.py dbshell之间的区别在文档中有说明:
django-admin dbshell
使用USERPASSWORD等设置中指定的连接参数,为ENGINE设置中指定的数据库引擎重新配置命令行客户端。

dfuffjeb

dfuffjeb2#

你可能做错了什么,也可能没做错什么,这要看情况
1.如果您尚未在models.py文件中创建任何模型,并且已在settings.py INSTALLED_APPS中注册了应用程序
在这种情况下,你没有做错任何事情。当你创建了至少一个模型并且在INSTALLED_APPS中注册了你的应用时,Django会在你的应用的migrations文件夹中创建一个迁移
1.如果您创建了模型,但忘记将应用添加到INSTALLED_APPS
在这种情况下,您只需将应用程序的名称添加到INSTALLED_APPS
希望这有帮助

ltqd579y

ltqd579y3#

在应用程序中创建“migrations”目录,并在其中创建名为“init.py”的空文件。然后运行makemigrations和migrate命令。
这解决了我的问题。

相关问题