在Django Application中集成和使用传统的Mysql DB

时间:2016-01-09 17:08:38

标签: python mysql django database

这是我在这个网站上的第一个问题,我是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 app查询。

  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': '',
      }
    }
    
  5. 问题/请求:

    这是我一直试图做的没有运气的事情:

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

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

1 个答案:

答案 0 :(得分:0)

使用django python manage.py inspectdb > models.py 命令:

function brushed() {
    time.domain(brush.empty() ? navTime.domain() : brush.extent())
        .range([0, (width)]);
    x.domain(max_extent_in_days(time))
        .rangeBands([margin.left, (width)], 0.1, 0);
    focus.selectAll('.bar.stack')
        .attr('transform', function(d) {return "translate(" + time(d.date) + ",0)"; })
        .attr('width', x.rangeBand());
    focus.selectAll('.rect')
        .attr('width', x.rangeBand());
    focus.selectAll('.line').attr('d', line);
    focus.select(".x.axis").call(x_axis);
};

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

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

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