python sqlalchemy動態(tài)修改tablename兩種實現(xiàn)方式
方式一
在Python的SQLAlchemy ORM中,您可以使用以下代碼動態(tài)地更改數(shù)據模型類的表名:
from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class MyModel(Base): __tablename__ = 'my_custom_table_name' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) #... 其它定義或使用... # 動態(tài)修改表名 MyModel.__table__.name = 'my_new_table_name'
在這個例子中,我們首先定義了一個名為MyModel
的數(shù)據模型,并將其與my_custom_table_name
表相關聯(lián)。然后,在必要時,我們可以通過訪問模型類的__table__
屬性來動態(tài)地更改表名。
這是因為ORM框架本身會自動為每個數(shù)據模型類創(chuàng)建一個對應的Table對象,并將其存儲在該類的__table__
屬性中。我們可以使用name
屬性直接更新此對象的名稱,從而實現(xiàn)動態(tài)更改表名的目的。
請注意,動態(tài)更改表名可能會影響到您的應用程序的正確性和可維護性。因此,請考慮清楚是否真正需要這樣做,以及如何規(guī)劃數(shù)據庫模式的變化。
方式二
如果我們原先的class為此:
from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class MyModel(Base): __tablename__ = 'my_custom_table_name' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer)
我們可以定義其抽象類:
class MyModelCls(Base): __abstract__ = True # 關鍵語句,定義所有數(shù)據庫表對應的父類 __table_args__ = {"extend_existing": True} # 允許表已存在 id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer)
然后通過函數(shù)返回class對象
def get_source_data_model_cls(cid, cid_class_dict={}): if cid not in cid_class_dict: cls_name = table_name = cid cls = type(cls_name, (MyModelCls, ), {'__tablename__': table_name}) cid_class_dict[cid] = cls return cid_class_dict[cid]
到此這篇關于python sqlalchemy動態(tài)修改tablename兩種實現(xiàn)方式的文章就介紹到這了,更多相關python sqlalchemy動態(tài)修改tablename內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python paramiko利用sftp上傳目錄到遠程的實例
今天小編就為大家分享一篇python paramiko利用sftp上傳目錄到遠程的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01python向已存在的excel中新增表,不覆蓋原數(shù)據的實例
下面小編就為大家分享一篇python向已存在的excel中新增表,不覆蓋原數(shù)據的實例,具有很好超參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05python獲取指定日期范圍內的每一天,每個月,每季度的方法
這篇文章主要介紹了python獲取指定日期范圍內的每一天,每個月,每季度的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08利用Python實現(xiàn)K-Means聚類的方法實例(案例:用戶分類)
k-means是發(fā)現(xiàn)給定數(shù)據集的k個簇的算法,也就是將數(shù)據集聚合為k類的算法,下面這篇文章主要給大家介紹了關于利用Python實現(xiàn)K-Means聚類的相關資料,需要的朋友可以參考下2022-05-05Python 通過微信控制實現(xiàn)app定位發(fā)送到個人服務器再轉發(fā)微信服務器接收位置信息
這篇文章主要介紹了Python 通過微信控制實現(xiàn)app定位發(fā)送到個人服務器,再轉發(fā)微信服務器接收位置信息,本文給出了實例代碼,代碼簡單易懂,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08