DJango - Sqlachemy - 如何生成已有数据库的models

  在使用SQLAlchemy时,若是数据库已经存在,这个时候若是还要手工书写model格式,即繁琐也容易出错,这里提供两个工具实现为你们解除这个烦恼。 html

一、使用sqlacodegen自动生成已有数据表的SQLAlchemy的Model 

  (1) 安装sqlacodegen:在控制台命令行下执行以下命令 
    pip install sqlacodegen安装完毕后经过在dos下执行:sqlacodegen --help,能够获取帮助信息 
  (2) 在命令行执行以下命令,生成model.py文件 
    sqlacodegen mysql+pymysql://root: aliyunzixun@xxx.com:3306/mystock > models.pypython

    其中“mysql+pymysql://root:aliyunzixun@xxx.com:3306/mystock” 为sqlAlchemy中create_engine()方法中参数,生成的model.py在dos所处的前文件夹内 mysql

二、Django使用inspectdb来生成Model

  Django的数据库层从Python代码生成SQL schemas—可是对于遗留数据库,你已经拥有SQL schemas. 这种状况,你须要为已经存在的数据表建立model. 为此,Django自带了一个能够经过读取您的数据表结构来生成model的工具. 该辅助工具称为inspectdb,你能够经过执行manage.pyinspectdb来调用它. sql

  经过运行django-admin.py startproject mysite (这里 mysite是你的项目的名字)创建一个Django项目。 好的,那咱们在这个例子中就用这个 mysite做为项目的名字。编辑项目中的配置文件, mysite/settings.py,告诉Django你的数据库链接参数和数据库名。 具体的说,要提供 DATABASE_NAMEDATABASE_ENGINEDATABASE_USERDATABASE_PASSWORDDATABASE_HOST, 和 DATABASE_PORT这些配置信息. shell

  (注意,这里面有些配置项是可选的,更多信息参考第五章) (Note that some of these settings are optional. Refer to Chapter 5 for more information.)数据库

  经过运行 pythonmysite/manage.pystartappmyapp(这里 myapp是你的应用的名字)建立一个Django应用.那么,咱们就以 myapp作为这个应用的名字. 
  这里咱们使用 myapp作为应用名.运行命令 pythonmysite/manage.pyinspectdb. 这将在 DATABASE_NAME数据库中检查全部的表和打印出为每张表生成的model 
class. 看一看输出结果想一下 inspectdb 能作些什么.将标准shell的输出重定向,保存输出到你的应用的 models.py文件里python mysite/manage.py inspectdb > mysite/myapp/models.py django

  编辑mysite/myapp/models.py文件以清理生成的 models 以及一些必要的定制化。app

相关文章
相关标签/搜索