电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python用sqlacodegen根據已有數據庫(表)結構生成對應SQLAlchemy模型

瀏覽:5日期:2022-06-16 18:16:03
目錄應用場景福音快快使用模型類效果注意事項

今天介紹一個后臺開發神器,很適合當我們數據庫中已存在了這些表,然后你想得到它們的model類使用ORM技術進行CRUD操作(或者我根本就不知道怎么寫modle類的時候);手寫100張表的model類?這是。。。。。。。。。 是不可能的,這輩子都不可能的。因為我們有sqlacodegen神器, 一行命令獲取數據庫所有表的模型類。

應用場景

1、后臺開發中,需要經常對數據庫進行CRUD操作;

2、這個過程中,我們就經常借助ORM技術進行便利的CURD,比如成熟的SQLAlchemy;

3、但是,進行ORM操作前需要提供和table對應的模型類;

4、并且,很多歷史table已經存在于數據庫中;

5、如果有幾百張table呢?還自己一個個去寫嗎?

6、我相信你心中會有個念頭。。。

福音

還是那句話,Python大法好。 這里就介紹一個根據已有數據庫(表)結構生成對應SQLAlchemy模型類的神器: sqlacodegen

This is a tool that reads the structure of an existing database and generates the appropriate SQLAlchemy model code, using the declarative style if possible.

安裝方法:

pip install sqlacodegen快快使用

使用方法也很簡單,只需要在終端(命令行窗口)運行一行命令即可, 將會獲取到整個數據庫的model:常用數據庫的使用方法:

sqlacodegen postgresql:///some_local_dbsqlacodegen mysql+oursql://user:password@localhost/dbnamesqlacodegen sqlite:///database.db

查看具體參數可以輸入:

sqlacodegen --help

參數含義:

optional arguments: -h, --help show this help message and exit --version print the version number and exit --schema SCHEMA load tables from an alternate schema --tables TABLES tables to process (comma-separated, default: all) --noviews ignore views --noindexesignore indexes --noconstraints ignore constraints --nojoined don’t autodetect joined table inheritance --noinflectdon’t try to convert tables names to singular form --noclassesdon’t generate classes, only tables --outfile OUTFILE file to write output to (default: stdout)

目前我在postgresql的默認的postgres數據庫中有個這樣的表:

create table friends( id varchar(3) primary key , address varchar(50) not null , name varchar(10) not null);create unique index name_addresson friends (name, address);

為了使用ORM進行操作,我需要獲取它的modle類但唯一索引的model類怎么寫呢? 我們借助sqlacodegen來自動生成就好了

sqlacodegen postgresql://ridingroad:ridingroad@127.0.0.1:5432/postgres --outfile=models.py --tables friends模型類效果

查看輸出到models.py的內容

# coding: utf-8from sqlalchemy import Column, Index, Stringfrom sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()metadata = Base.metadataclass Friend(Base): __tablename__ = ’friends’ __table_args__ = (Index(’name_address’, ’name’, ’address’, unique=True), ) id = Column(String(3), primary_key=True) address = Column(String(50), nullable=False) name = Column(String(10), nullable=False)

如果你有很多表,就直接指定數據庫唄(這是會生成整個數據庫的ORM模型類哦),不具體到每張表就好了, 后面就可以愉快的CRUD了,耶

注意事項

Why does it sometimes generate classes and sometimes Tables?

Unless the --noclasses option is used, sqlacodegen tries to generate declarative model classes from each table. There are two circumstances in which a Table is generated instead: 1、the table has no primary key constraint (which is required by SQLAlchemy for every model class) 2、the table is an association table between two other tables

當你的表的字段缺少primary key或這張表是有兩個外鍵約束的時候,會生成table而不是模型類了。比如,我那張表是這樣的結構:

create table friends( id varchar(3) , address varchar(50) not null , name varchar(10) not null);create unique index name_address on friends (name, address);

再執行同一個命令:

sqlacodegen postgresql://ridingroad:ridingroad@127.0.0.1:5432/postgres --outfile=models.py --tables friends

獲取到的是Table:

# coding: utf-8from sqlalchemy import Column, Index, MetaData, String, Tablemetadata = MetaData()t_friends = Table( ’friends’, metadata, Column(’id’, String(3)), Column(’address’, String(50), nullable=False), Column(’name’, String(10), nullable=False), Index(’name_address’, ’name’, ’address’, unique=True))

其實和模型類差不多嘛,但是還是盡量帶上primary key吧,免得手動修改成模型類

以上就是python用sqlacodegen根據已有數據庫(表)結構生成對應SQLAlchemy模型的詳細內容,更多關于python sqlacodegen的使用的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 山东钢衬塑罐_管道_反应釜厂家-淄博富邦滚塑防腐设备科技有限公司 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 西装定制/做厂家/公司_西装订做/制价格/费用-北京圣达信西装 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 贵州成人高考网_贵州成考网 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 陕西自考报名_陕西自学考试网 | 江西自考网-江西自学考试网|