【发布时间】:2018-11-25 09:00:24
【问题描述】:
我想要做的是:我有一个包含一些公共交通数据的 csv 文件。我想在我的 Django 应用程序中使用它,所以我将 csv 导入我的 mySQL 数据库。然后,我为表创建了一个 Django 模型(我还将我的模型与python manage.py inspectdb 的输出进行了比较,以确保它是正确的。然后我运行python manage.py makemigrations,最后运行python manage.py migrate。据我所知(我是Django 新手,如果我遗漏了一些明显的东西,很抱歉),我的数据库中的表现在应该可以被 Django 访问了。
但它不起作用。我尝试使用 Django shell (python manage.py shell) 并使用 Stops.objects.all() 返回表内容,它返回一个空集。同样,我能够创建一个值为 Stops.objects.all() 的 HttpResponse,虽然它没有给出错误,但没有返回任何数据。我已经确认我在 settings.py 中访问了正确的数据库,并且数据实际上是通过 mysql 终端存在的。
我多年来一直在尝试解决此问题,但没有找到任何解决方案。我想我可能错过了一些小步骤,希望这里的人会知道。提前致谢!
【问题讨论】:
-
您是否在 Django 设置中连接到您的 mySQL 服务器?默认情况下它使用 SQLight。
-
是的,我正在使用 mysql 连接器并安装了 mysqlclient Python 包。当我练习时,我能够创建表格、插入数据并返回它。该问题似乎特定于不是通过 Django 创建的数据。
-
你确定你导入csv文件的表名和
makemigrations-migrate创建的表名一样吗? -
正如@Chiefir 所说,Django 有一种特定的方式来命名它创建的表,它是
[app_name]_[table_name],可能是您将数据导入到一个名为mydata的表中,但 Django 期望要命名的表myapp_mydata? -
其实我不确定。我数据库中的表称为“stops”,我的 Django 模型称为“Stop”。我应该在其他地方定义模型应该代表的数据库表吗?还是该类必须与表具有完全相同的名称?这是我在尝试解决此问题时考虑的问题,但如果模型以某种方式未与正确的表关联,当我运行
makemigrations-migrate时不会创建一个新表吗?当我这样做时,它工作正常,我的数据库中仍然只有“停止”表。
标签: mysql django python-3.x django-models