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

相關文章
相關標籤/搜索