python - SQLAlchemy 2.0 迁移 - 连接到数据库
问题描述
我只是在测试 SQLAlchemy 1.4 库,我注意到在可预见的将来它们会改变某些核心功能。我通常连接到如下所示的数据库,然后他们提到他们将bind
在类上删除此方法MetaBase
,编写此方法的设定标准是什么?
def output_log(msg):
connector = create_engine("mylogin")
metadata = MetaData(bind=connector)
log = Table("mytable", metadata, autoload=True)
sess = connector.connect()
i = insert(log).values({"Message": msg})
sess.execute(i)
sess.close()
解决方案
对此的更改和背景在“隐式”和“无连接”执行中描述,“绑定元数据”已删除。
您可以按如下方式重写代码:
def output_log(msg):
engine = create_engine("mylogin")
metadata = MetaData()
log = Table("mytable", metadata, autoload_with=engine)
sess = engine.connect()
i = log.insert().values({"Message": msg})
sess.execute(i)
sess.commit()
sess.close()
或者为了完整性,使用with
:
with engine.begin() as sess:
i = log.insert().values({"Message": msg})
sess.execute(i)
未来的另一个half
选择commit
:
with engine.connect() as sess:
i = log.insert().values({"Message": msg})
sess.execute(i)
sess.commit()
推荐阅读
- python - 链表节点指针数组的空间复杂度
- serverless-framework - 无服务器 Azure 功能无法安装在 Ubuntu 桌面上
- android - AppBarLayout 的边框有奇怪的阴影
- python-3.x - 熊猫用累积和替换列
- eclipse - appengine-application.xml 未能通过 XML 验证
- java - 协助阵列实验室
- scala - udf,scala中的方法参数太多
- python - 使用 lxml.html 解析大型 html 文档
- mysql - MySQL:如何找到特定行的平均值?
- curl - 如何通过 curl 从 nginx 获取静态文件?