python sqlalchemy动态修改tablename两种实现方式
作者:拾牙慧者 发布时间:2023-12-05 06:43:15
标签:python,sqlalchemy,动态,修改,tablename
方式一
在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]
来源:https://hanhandi.blog.csdn.net/article/details/129418778
0
投稿
猜你喜欢
- 内容摘要:现在博客很流行,相信应该上网时间稍微长点的朋友都会在这或者在那的有一个自己的博客。对于一些有一定能力的朋友,可能更喜欢自己去下载一
- 阅读上一篇:你是真正的用户体验设计者吗? Ⅲ交互系统设计者负责用户体验——不!那么什么是真正的交互呢?什么是交互式系统?你桌子上的杯子是交互
- 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹;打开了python项目后,需要配置该项目对应的pytho
- <div class=”A” style=”position:relative;”>A 
- 由于最近在处理shp文件,想要跳出arcpy的限制,所以打算学习一下pyshp包的使用方法。在使用《Python地理空间分析指南(第2版)》
- 1. 需要用到的Python库pygametkinter2. 简易UI设计audio_player = Tk()audio_player.t
- python查找多层嵌套字典的值def find_dic(item, key): if isinstance(it
- 方法一通过斜率关系计算,公式如下图:需注意在求斜率时不要出现竖直情况,python计算会报错,但按理说应该可以计算出无穷的,此处先放这吧,等
- SQL语句更改表所有者SQL语句更改表所有者单个修改所有者sql语句如下:查询分析器输入:EXEC sp_changeobject
- 什么是F型浏览?2006年4月,美国长期研究网站可用性的著名网站设计师杰柯柏·尼尔森(Jakob Nielsen)发表了一项《眼球轨迹的研究
- asyncio介绍熟悉c#的同学可能知道,在c#中可以很方便的使用 async 和 await 来实现异步编程,那么在p
- 我们直接先给出输出与预期不同的代码In[28]: a = [1,2,3,4,5,6]In[29]: for i in a: ...: &nb
- 一、说明:urllib库是python内置的一个http请求库,requests库就是基于该库开发出来的,虽然requests库使用更方便,
- 我想大多数的人在编写ASP程序的时候,都碰到过类似的错误信息: Error Number -> 
- 上次用Javascript+ASP实现了无刷新的新闻列表,最后还有一个小问题没有解决:下边的分页数列"首页、上10页、下10页、尾
- 看了下传统的方法,觉得不好,太麻烦。自己重写了个,思路比较新。这个函数的优点是html代码可以很简洁,使用图片也可以很少,只需要两张图片。事
- 如下所示:>> type(np.newaxis)NoneType>> np.newaxis == NoneTruen
- 我就废话不多说了,直接上代码吧!'''python对象销毁(垃圾回收)'''class Po
- Pycharm实然提示过期了,网上找了很多Pycharm激活码,要么只支持老版本,要么是不能用。费了半天时间终于在一公众号里找到一枚可以使用
- 本文实例讲述了Python 私有化操作。分享给大家供大家参考,具体如下:私有化xx: 公有变量_x: 单前置下划线,私有化属性或方法,fro