Python 在django中重新启动postgres连接

Python 在django中重新启动postgres连接,python,django,git,postgresql,Python,Django,Git,Postgresql,我这里的情况很奇怪 问题: 我在本文中描述了最初的问题,但概括起来: 在使用该项目一段时间后,MakeMiggrations停止为我工作。 (是的,我把一切都设置好了,设置好了,……请看我在上一篇文章中的评论) 我决定我不能搞清楚这一点,所以我会重新开始。(这就是为什么git代表:D) 所以,我删除了我的django项目,创建了新的虚拟环境,并在postgres中创建了新的数据库和新的用户 我更新配置文件中的新数据库参数,并尝试运行初始makemigrations,但没有luch。仍然有人说没有

我这里的情况很奇怪

问题: 我在本文中描述了最初的问题,但概括起来:

在使用该项目一段时间后,MakeMiggrations停止为我工作。 (是的,我把一切都设置好了,设置好了,……请看我在上一篇文章中的评论)

我决定我不能搞清楚这一点,所以我会重新开始。(这就是为什么git代表:D)

所以,我删除了我的django项目,创建了新的虚拟环境,并在postgres中创建了新的数据库和新的用户

我更新配置文件中的新数据库参数,并尝试运行初始makemigrations,但没有luch。仍然有人说没有新的迁移可用

我很绝望,因为我不能在这个项目上工作,所以任何解决方案都可以:D

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py makemigrations connectors environment=local
I will use local settings.
No changes detected in app 'connectors'
我所有的迁移

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py showmigrations environment=local
I will use local settings.
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
connectors
 (no migrations)
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
sessions
 [X] 0001_initial
什么时候吃午饭

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py migrate --fake-initial environment=local
I will use local settings.
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.
有趣的是,如果我关闭postgres数据库,我仍然会在终端中得到相同的文本。我想我应该得到一些连接错误

数据库配置yaml

database:
  port: 5432
  host: 'localhost'
  user: 'user1'
  password: 'user_password_123!'
  db: 'db1'
和我的设置文件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': CONFIG['database']['db'],
        'USER': CONFIG['database']['user'],
        'PASSWORD': CONFIG['database']['password'],
        'HOST': CONFIG['database']['host'],
        'PORT': CONFIG['database']['port'],
    }
}

过了好几个小时,我找到了解决办法,这实际上是我的错误。 我将为那些犯类似错误的人发布答案:D

事实上,@Alasdair和@AdamBarnes是对的。我没有连接到新数据库,但不是因为数据库设置错误(主机、端口、用户名、数据库等)

我在
settings.py中拥有的是数据库和单元测试数据库的设置

# Databases start
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': CONFIG['database']['db'],
        'USER': CONFIG['database']['user'],
        'PASSWORD': CONFIG['database']['password'],
        'HOST': CONFIG['database']['host'],
        'PORT': CONFIG['database']['port'],
     }
}

if 'test' or 'jenkins' in sys.argv:
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'test_database',
}
问题在于下面的if语句。出于某种原因,他明白这一直都是事实。所以程序迁移sqlite内部测试数据库

我需要和你一起解决这个问题

if ('test' in sys.argv) or ('jenkins' in sys.argv):
这解决了第一个问题,即进行迁移时会留下空数据库。 在此修复之后,migrate使用默认的Django表填充数据库,但不使用my表

修复方法是在admin.py文件中导入my models.py

import connectors.models

非常感谢大家给了我很好的提示来找到解决方案

过了好几个小时,我找到了解决办法,而这实际上是我的错误。 我将为那些犯类似错误的人发布答案:D

事实上,@Alasdair和@AdamBarnes是对的。我没有连接到新数据库,但不是因为数据库设置错误(主机、端口、用户名、数据库等)

我在
settings.py中拥有的是数据库和单元测试数据库的设置

# Databases start
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': CONFIG['database']['db'],
        'USER': CONFIG['database']['user'],
        'PASSWORD': CONFIG['database']['password'],
        'HOST': CONFIG['database']['host'],
        'PORT': CONFIG['database']['port'],
     }
}

if 'test' or 'jenkins' in sys.argv:
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'test_database',
}
问题在于下面的if语句。出于某种原因,他明白这一直都是事实。所以程序迁移sqlite内部测试数据库

我需要和你一起解决这个问题

if ('test' in sys.argv) or ('jenkins' in sys.argv):
这解决了第一个问题,即进行迁移时会留下空数据库。 在此修复之后,migrate使用默认的Django表填充数据库,但不使用my表

修复方法是在admin.py文件中导入my models.py

import connectors.models

非常感谢大家给了我很好的提示来找到解决方案

如果
showmigrations
包含大量
[X]
,则表示您正在连接到现有数据库,而不是新数据库。发布用于创建新数据库的命令。Django报告说已经在那里设置并迁移了一个数据库,这表明您根本没有创建新数据库,或者没有连接到新数据库。如果
showmigrations
包含大量
[X]
,则表示您正在连接到现有数据库,不是新的。发布用于创建新数据库的命令。Django报告说已经在那里设置并迁移了一个数据库,表明您根本没有创建新数据库,或者没有连接到新数据库。请接受您自己的答案,这样问题就不会出现在“未回答”列表中。请接受您自己的答案,这样问题就不会出现在“未回答”列表中。