sqlalchemy 动态获取 model 类

2021-03-30 15:28:13 +08:00
 renvip
RT,程序会新增表,但这些表的数据结构一致,如何写一个方法,动态获取 model 类,然后使用 orm 进行表的增删改查。网上有一些,但是可能有坑和缺陷,问问大佬有没有实现过,避免造轮子。思路,定义一个 get_model(tablename)方法,传递表名,返回一个 model 类,然后可以用 model 类直接进行表的增删改查,至于创建新表,在方法里判断一下,这个表在数据库存在不存在,存在就不创建,不存在就创建。
参考链接:base64
aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phY2tlMTIxL2FydGljbGUvZGV0YWlscy84OTI5MjcyNg==
aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pfT2JqZWN0L2FydGljbGUvZGV0YWlscy84MDExMTc0Ng==
aHR0cHM6Ly93d3cuaXQ2MTAuY29tL2FydGljbGUvMTI5MjYwMzk0NjAxOTM5NzYzMi5odG0=
1461 次点击
所在节点    Python
3 条回复
amoyiki
2021-03-30 17:22:10 +08:00
wonderay
2021-03-31 16:15:25 +08:00
"至于创建新表,在方法里判断一下,这个表在数据库存在不存在,存在就不创建,不存在就创建。"

你是想通过表结构, 生成对应的 model, 既然表都不存在,model 也就无从生成, 那还怎么创建呢?
renvip
2021-04-01 09:49:26 +08:00
@wonderay 我可以使用 db.create_all()建表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/766533

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX