sqlalchemy映射mysql_请教 sqlalchemy,如何根据映射类定义去创建表?
如:Base = declarative_base()engine = create_engine("mysql+pymysql://root:[emailprotected]:3306/MTData?charset=utf8", echo=False)Session = sessionmaker(bind=engine)session = Session()metadata = MetaDat.
如:
Base = declarative_base()
engine = create_engine("mysql+pymysql://root:[email protected]:3306/MTData?charset=utf8", echo=False)
Session = sessionmaker(bind=engine)
session = Session()
metadata = MetaData(engine)
class tbl_mtLive(Base):
__tablename__ = 'mtLive'
id = Column(INTEGER(64), primary_key=True)
timeline = Column(SMALLINT())
mtuptime = Column(SMALLINT())
mttext = Column(String(500))
mtstatus = Column(String(25))
Strtime = Column(String(25))
fixStrtime = Column(DateTime)
mtid = Column(String(10))
UpdateTime = Column(DateTime)
SQLTAG = Column(String(20))
MTData 库里面,除了 mtLive 还有 N 张表,
有些已经像 class tbl_mtLive(Base)这样“映射类定义”了,
有些则没有,
请教大家第一个问题是:如果 mtLive 这个表并没有建立,上面这种 ORM 的前提下,如何以 class tbl_mtLive 去创建表?
sqlalchemy 的文档看得眼都花了。。。-_-
第二个问题是:
想法是打算把库里面的全部表做一个历遍,
去执行
for i in #这个表集合如何获取?#
session.execute(f"update {i} set `{k}`='{v[0]}' where mtid = '{i.get('mtid')}' AND timeline = '{i.get('timeline')}'")
# 更新 UpdateTime
session.execute(f"update {i} set `UpdateTime`='{ProcFixTime()}' where mtid = '{i.get('mtid')}' AND timeline = '{i.get('timeline')}'")
看了网上的例子,文档和网上有很多的例子是用.cursors,.execute()执行了 SQL 语句,用.fetchall()的方获取到表名,然后开始 do something 的,
请问 ORM 方式是否有方法可以实现?如何做?
尽管在草拟这个帖子的前 1 小时,已经实现
tables = Base.metadata.tables
print(tables)
获得了表名,似乎觉得这样操作不是好办法。。。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)