Django - 访问mySQL数据库中的预先存在的数据

时间:2018-06-15 13:44:09

标签: mysql django python-3.x django-models

我正在尝试做的是:我有一个包含一些公共传输数据的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终端进行的。

我一直试图解决这个问题多年,但没有找到任何解决方案。我想我可能错过了一些小步骤,希望有人会知道。提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果我是你,我会验证我的表是按预期命名的。

使用MySQL,something like

USE mydb
SHOW TABLES;

我假设您的django表将使用f" {app_label} _ {model}"的默认命名方案。所以,如果您的应用被命名为" my_app"而你的模型是"停止"那么你可以期待django管理一个名为" my_app_stops"

的表

您可以使用django shell验证这一点

$ ./manage.py shell

from my_app.models import Stops
Stops._meta.db_table

我希望这会有所帮助。没有更多信息,我只能告诉你如何调查最明显的缺陷。

修改 如果您确定这是差异,您有几个选择: (1)重命名你的表以匹配Django,或 (2)强制django使用a Meta class

查看您现有的表格
from django.db import models
class Stops(models.Model):
    class Meta:
        db_table = 'some_table_name'