如何在Python SQLAlchemy中动态修改tablename?
方式一在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]
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















