如:

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)

获得了表名,似乎觉得这样操作不是好办法。。。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐