來源:AirPython作者:星安果1. 前言大家好,我是安果!熟悉 Django 的朋友應該知道,我們可以通過「 inspectdb 」命令將資料庫表反向生成 Model 並寫入到檔案中去比如,Django 項目對
2021-06-16 11:05:33
來源:AirPython
作者:星安果
1. 前言
大家好,我是安果!
熟悉 Django 的朋友應該知道,我們可以通過「 inspectdb 」命令將資料庫表反向生成 Model 並寫入到檔案中去
比如,Django 項目對映資料庫中有一張 student 表,我們希望反向生成 Model 並寫入到本地檔案 models.py 檔案中
只需要輸入下面命令:# 反向生成Model# 進入到項目根目錄,輸入下面的命令# 其中# student:對映資料庫的student資料表# 寫入到index App 下的models.py檔案內python3 manage.py inspectdb student > index/models.py但如果是一個普通 Python 項目,如何反向生成 Model 呢?
2. 普通項目反向生成 Model
假設項目使用「 sqlalchemy 」連線操作資料庫from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerengine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(user, password, host, port, database), echo = True)session = sessionmaker(bind=self.engine)()...接著,我們安裝依賴「 sqlacodegen 」# 安裝依賴pip3 install sqlacodegen這樣,我們就可以使用 sqlacodegen 命令關聯資料庫表,在本地一鍵生成 Model 了def generate_orm_table(db_ip, db_name, table_name, output, username='root', pwd='root', port=3306):""" 生成orm資料表 :return: """ exec_cmd( 'sqlacodegen --tables {} --outfile {} mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format( table_name, output, username, pwd, db_ip, port, db_name))if __name__ == '__main__': # 生成orm資料庫表 table_name = 'zlb_users' # 生成Model generate_orm_table("192.168.*.*", "db_name", "table_name", "./../model/{}.py".format(table_name))
3. 最後
雖然可以通過命令列一鍵生成 Model,但是生成的部分欄位可能存在誤差,需要手動進行調整一下
比如,資料庫如果某個欄位為時間 datetime,反向生成 Model 中的 DateTimeField 欄位參數值需要略微調整
相關文章
來源:AirPython作者:星安果1. 前言大家好,我是安果!熟悉 Django 的朋友應該知道,我們可以通過「 inspectdb 」命令將資料庫表反向生成 Model 並寫入到檔案中去比如,Django 項目對
2021-06-16 11:05:33
如果把時間撥回到十年前,當時誰的手握得起價值 5288 元的 iPhone,誰就有了炫耀的資本。可現在, iPhone 在世界手機市場所佔份額越來越大,身邊手持 iPhone 的人可謂是遍地都是。
2021-06-16 11:05:01
華為如今的新動作還是蠻多的,比如鴻蒙系統、麒麟處理器以及新機的上市等,即使華為被限制了,也沒有停止發展腳步。就拿鴻蒙OS傳出好訊息之後來說,它的目標也變得更加遠大了,華為需
2021-06-16 11:04:32
IT之家 6 月 16 日訊息 E3 2021 遊戲展進入了尾聲,在今日舉辦 Award 頒獎儀式上,主辦方揭曉了各個廠商的釋出會上最受期待的遊戲。E3 2021 最受期待遊戲《極限競速:地平線 5》
2021-06-16 11:04:20
近日,浙江省建築科學設計研究院(以下簡稱「浙江省建科院」)與同濟大學關於《適應整合灶下排式的排氣道技術研究》(浙江省標準圖集及規程編制)項目正式開展,森歌電器作為行業唯一
2021-06-16 11:04:03
近幾年,人們對於智慧生態以及大屏體驗的需求逐漸提升,此時能夠兼具兩者優勢的產品自然會得到更多使用者的青睞。順應這個趨勢,同時也是為了發力旗下的 AI×IoT 生態,TCL 帶來了
2021-06-16 10:45:39