DJango - Sqlachemy - 如何生成已有数据库的models
在使用SQLAlchemy时,如果数据库已经存在,这个时候如果还要手工书写model格式,即繁琐也容易出错,这里提供两个工具实现为大家解除这个烦恼。
1、使用sqlacodegen自动生成已有数据表的SQLAlchemy的Model
(1) 安装sqlacodegen:在控制台命令行下执行如下命令
pip install sqlacodegen安装完毕后通过在dos下执行:sqlacodegen --help,可以获取帮助信息
(2) 在命令行执行如下命令,生成model.py文件
sqlacodegen mysql+pymysql://root: aliyunzixun@xxx.com:3306/mystock > models.py
其中“mysql+pymysql://root:aliyunzixun@xxx.com:3306/mystock” 为sqlAlchemy中create_engine()方法中参数,生成的model.py在dos所处的前文件夹内
2、Django使用inspectdb来生成Model
Django的数据库层从Python代码生成SQL schemas—但是对于遗留数据库,你已经拥有SQL schemas. 这种情况,你需要为已经存在的数据表创建model. 为此,Django自带了一个可以通过读取您的数据表结构来生成model的工具. 该辅助工具称为inspectdb,你可以通过执行manage.pyinspectdb来调用它.
通过运行django-admin.py startproject mysite (这里 mysite是你的项目的名字)建立一个Django项目。 好的,那我们在这个例子中就用这个 mysite作为项目的名字。编辑项目中的配置文件, mysite/settings.py,告诉Django你的数据库连接参数和数据库名。 具体的说,要提供 DATABASE_NAME, DATABASE_ENGINE, DATABASE_USER, DATABASE_PASSWORD, DATABASE_HOST, 和 DATABASE_PORT这些配置信息.
(注意,这里面有些配置项是可选的,更多信息参考第五章) (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
编辑mysite/myapp/models.py文件以清理生成的 models 以及一些必要的定制化。