我想使用检查b来为新引入的表建立相应的模型。但是看起来这个命令只查找public模式,而新表位于另一个表中。
是否可以为inspectdb指定模式?
发布于 2014-02-24 11:49:57
基于这个要旨,我修改了django.core.management.commands.inspectdb:在第32行,在handle_inspection()中,在cursor = connection.cursor()之后,添加cursor.execute("SET search_path TO myotherschema")。
def handle_inspection(self, options):
connection = connections[options.get('database')]
table2model = lambda table_name: table_name.title().replace('_', '').replace(' ', '').replace('-', '')
cursor = connection.cursor()
cursor.execute("SET search_path TO myotherschema")
# [...]至少,Django 1.9:
def handle_inspection(self, options):
# [...]
with connection.cursor() as cursor:
cursor.execute("SET search_path TO myotherschema")
# [...]发布于 2016-02-05 15:00:01
是的,您必须指定search_path,在settings.py的数据库变量中添加一个选项,如下所示:
'OPTIONS': {
'options': '-c search_path=myschema'
}完整的数据库变量应该是:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydatabase',
'USER': 'postgres',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
'OPTIONS': {
'options': '-c search_path=myschema'
}
}
}在此之后,python manage.py inspectdb应该使用您的模式。
发布于 2022-06-18 07:07:09
也许简单的方法总是最好的
您可以将schma public更改为其他名称。
登录到数据库用户界面并打开查询工具,然后运行:将模式公共重命名为public2
然后,可以将具体的模式名称更改为public (您需要从它中收集django模型)
然后在文本编辑器上运行以下命令
python server/manage.py inspectdb > models.py然后将schama重命名为
https://stackoverflow.com/questions/21986917
复制相似问题