如何在Python SQLAlchemy中动态修改tablename?
作者:OpenWorld
时间:2023-04-24
浏览:0
方式一在Python的SQLAlchemyORM中,您可以使用以下代码动态地更改数据模型类的表名:fromsqlalchemy.ext.declarativeimportdeclarative_baseBase=declarative_base()classMyModel(Base):__tablename__='my_custom_table_name'id=Column(Integer,primary_key=True)name=Column(String)age=Column(Int
方式一
在Python的SQLAlchemy ORM中,您可以使用以下代码动态地更改数据模型类的表名:
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) #... 其它定义或使用... # 动态修改表名 MyModel.__table__.name = 'my_new_table_name'
在这个例子中,我们首先定义了一个名为MyModel的数据模型,并将其与my_custom_table_name表相关联。然后,在必要时,我们可以通过访问模型类的__table__属性来动态地更改表名。
这是因为ORM框架本身会自动为每个数据模型类创建一个对应的Table对象,并将其存储在该类的__table__属性中。我们可以使用name属性直接更新此对象的名称,从而实现动态更改表名的目的。
请注意,动态更改表名可能会影响到您的应用程序的正确性和可维护性。因此,请考虑清楚是否真正需要这样做,以及如何规划数据库模式的变化。
方式二
如果我们原先的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 # 关键语句,定义所有数据库表对应的父类
__table_args__ = {"extend_existing": True} # 允许表已存在
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)然后通过函数返回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]
作者最新文章
三星 Galaxy A08 渲染图曝光:Helio G99 芯片与 6000mAh 电池配置解析
2026-09-08 17:14
OPPO Find X10 Pro Max 影像规格详解:三颗2亿像素镜头与全焦段8K视频能力
2026-09-08 16:41
PDF转HTML在线转换器怎么选?转换后网页排版怎么查?
2026-09-04 11:02
AE教程书籍挑选指南:零基础、动效与合成方向实战标准
2026-09-02 13:31
教程书籍使用SAI软件Logo要单独授权吗:商标引用与出版合规要点
2026-09-02 11:50
上一篇:
java中怎么实现List集合去重
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































