跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教 sqlalchemy,如何根据映射类定义去创建表?
未分類
26 6 月 2020

请教 sqlalchemy,如何根据映射类定义去创建表?

请教 sqlalchemy,如何根据映射类定义去创建表?

資深大佬 : qazwsxkevin 7

如:

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)
获得了表名,似乎觉得这样操作不是好办法。。。

大佬有話說 (2)

  • 資深大佬 : gjquoiai

    其实没太看懂。。第一个问题应该是 Base.metadata.create_all()?第二个问题可能可以用 automap

  • 資深大佬 : myCupOfTea

    第二个问题直接用 automap 啊

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具