【问题标题】:Integrating and using a legacy Mysql DB in Django Application在 Django 应用程序中集成和使用旧版 Mysql 数据库
【发布时间】:2016-01-09 17:08:37
【问题描述】:

这是我在这个网站上的第一个问题,我是 Django、SQL 和一般开发的新手。所以这里什么都没有!

操作系统 - Mac OS X 10.10.5。

  1. 我正在使用 Django v 1.8 构建一个应用程序。项目中的具体内容非常简单——它将针对现有 MySQL 数据库执行查询。

  2. 我目前使用 MySQL v5.6.27(带有 MySQLworkbench 6.3)并将其安装在默认位置。

    /usr/local/var/mysql
    
  3. 我煞费苦心地使用 python 脚本用大量数据填充这个数据库。数据库对于项目至关重要,也是我想使用我的 django 应用程序查询的东西。

  4. 接下来,我在我的项目中配置我的 settings.py 文件以使用 mysql 而不是它自带的默认 sqlite。

    projectroot/projectname/settings.py
    
    DATABASES = {
      'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'APP_stock_data',   #Name of the DB I have my data in
        'USER': 'User',
        'PASSWORD': 'my-pw',  #Changed for this post
        'HOST': 'localhost',   
        'PORT': '',
      }
    }
    

问题/请求:

这是我一直在尝试做的事情:

  • MySQL 数据库有大量数据。我想用 Django 应用程序发送该数据库。如何将 mySQL 数据库放入我的 Django 应用程序?我是否进行 mysql 转储并将数据转储到数据库目录中? (比如下面的例子)

    /projectroot/database
    
  • 我还想要创建新表的能力,这样我就可以创建用户模型、新帖子等。计划只是通过迁移在每个应用程序中创建新模型。一旦它位于上面列出的目录中,我是否可以简单地对该数据库进行正常迁移而不影响现有数据的完整性?

【问题讨论】:

    标签: python mysql django database


    【解决方案1】:

    使用 django inspectdb 命令:

    python manage.py inspectdb > models.py  
    

    这会将所有数据库表导出到模型类。但是您需要先连接到旧数据库,但此命令不会触及数据库记录而只是读取架构。

    如果您只是想继续使用原来的数据库,那么就是这样。否则,您可以将 sql 转储到文件并将其导入新数据库。最后,您只需要配置您的 django 以指向正确的数据库。

    Django 有解释how to integrate with legacy database 的文档。

    【讨论】:

    • 完全正确 - 我能够按照您的建议成功导出模式并将它们转储到 model.py 文件中(此应用程序不需要这样做,因为它只读取数据)。
    • 感谢您将文件转储到正确的目录中。有点新,即使是这样的简单概念仍然是“正在进行的工作”
    • 是的,转储/加载数据可能会占用您服务器的时间和资源,但只需执行一次就不会受到伤害。您是否尝试过检查您的数据库有多大?它保存了多少条记录?
    • 转储和加载此数据只需执行一次 - 我不打算写入此数据库,除非我每季度更新一次实际数据库。包含所有数据的主表大约 500 mb,大约有 130 万行。
    猜你喜欢
    • 2012-03-05
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多