Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django—使用inspectdb时为空数据库_Python_Database_Django - Fatal编程技术网

Python Django—使用inspectdb时为空数据库

Python Django—使用inspectdb时为空数据库,python,database,django,Python,Database,Django,我正试图在以下位置查看文档: 首先,我将数据库添加到settings.py,然后键入 python manage.py inspectdb 这是输出。对不起,时间太长了;希望你只需要看大局 我的问题是 1) 我不知道如何将某些内容放入数据库(当我用文本编辑器打开数据库时,它只是随机字符) 2) 如果运行python manage.py sqlcustom[app name],则不会输出任何内容 3) 很可能是上述两种情况的结果,导入的数据库在Django中显示为空。当我在shell中键入Bon

我正试图在以下位置查看文档:

首先,我将数据库添加到settings.py,然后键入

python manage.py inspectdb
这是输出。对不起,时间太长了;希望你只需要看大局

我的问题是

1) 我不知道如何将某些内容放入数据库(当我用文本编辑器打开数据库时,它只是随机字符)

2) 如果运行python manage.py sqlcustom[app name],则不会输出任何内容

3) 很可能是上述两种情况的结果,导入的数据库在Django中显示为空。当我在shell中键入Bonds.objects.all()时,它会返回一个空列表,而应该有很多(我已经确认了)


你按照其余的指示走了吗?您需要将
inspectdb
的输出添加到某个应用程序中的
models.py
文件中,然后将该应用程序添加到您的
已安装的应用程序中

请尝试以下操作:

1) 创建一个应用程序 如果没有要将
inspectdb
的输出放入的应用程序,只需运行
python manage.py startapp legacy
。这将创建一个名为
legacy
的应用程序,您可以通过该应用程序同步现有数据库

2) 将inspectdb输出添加到应用程序的模型文件 在所选应用程序的
models.py
文件中,粘贴
inspectdb
命令的输出。最简单的方法可能是运行
python manage.py inspectdb>models.py
。这将在具有
manage.py
和您的应用程序目录的同一目录中创建名为
models.py
的文件。将该文件的输出复制到应用程序中的
models.py
文件中,即
legacy/models.py

3) 将您的应用添加到已安装的应用 在您的
settings.py
中,将您的应用程序添加到
已安装的应用程序中。在本例中,您希望将
'legacy',
添加到
已安装的应用程序中

4) 运行syncdb
运行
python manage.py syncdb
以确保包含所有必需的表。看起来您已经有了基于上面粘贴的输出的结果,但是再次运行它不会有什么坏处。

我找到了答案,这是一个显而易见的答案:数据库路由。您需要创建一个
routers.py
文件,并将其添加到
设置.py

DATABASE_ROUTERS = ['myapp1.routers.name-of-your-routers.py-class',
                    'myapp2.routers.name-of-your-routers.py-class']
DATABASE_APPS_MAPPING = {'myapp1': 'mydb1', 
                         'myapp2':'mydb2'}
Djangosnippets具有
routers.py
文件:


您需要在
models.py中的每个类的Meta类中添加一个名为
的属性,该属性位于\u db='desired db'
,谢谢您的回复。我已经完成了这些步骤,只不过我只是在应用程序中复制粘贴了输出。您是否将其放入应用程序的
models.py
文件中?只是注意到您的一些模型缺少Django所需的主键。不确定这是否是您的问题,但尝试将
id=models.AutoField(primary\u key=True)
添加到那些没有pk的模型中。很好。不幸的是,问题仍然存在。我猜b/c添加该行实际上并不会将db更改为添加pk。你能编辑这个数据库吗?可能进入
sql
code,为缺少它们的模型添加一个
pk
字段,然后再次运行
inspectdb
DATABASE_ROUTERS = ['myapp1.routers.name-of-your-routers.py-class',
                    'myapp2.routers.name-of-your-routers.py-class']
DATABASE_APPS_MAPPING = {'myapp1': 'mydb1', 
                         'myapp2':'mydb2'}