Ale*_*gur 4 sqlalchemy pg8000 google-cloud-functions
我在我编写的一些代码中进行了以下(相对)简单的调用:
pickups = session.query(Pickup).filter(Pickup.firebase_run_id == run_id).all()
Run Code Online (Sandbox Code Playgroud)
我对此代码有两组集成测试,一组在本地运行并使用psycops2TLS,另一组在 GCP 开发环境(GCP 云功能)中运行并使用pg8000UNIX 套接字(GCP 要求(?)通过 UNIX 套接字连接到 Cloud SQL - 请参阅此处)。本地集成测试运行良好。但是,开发测试可靠地失败并出现以下错误:
pickups = session.query(Pickup).filter(Pickup.firebase_run_id == run_id).all()
Run Code Online (Sandbox Code Playgroud)
这个特定的函数调用实际上只是这种失败的一个例子;我所有的数据库调用都失败并出现相同的_execute_and_instances错误!
也许有人对解决此问题的方法有所了解?
Ale*_*gur 13
pg8000在它的实现中有一个长期存在的错误,sqlalchemy驱动程序刚刚修补了这个错误。新的pg8000维护者最近为这个问题引入了一个补丁,并发布了一个pg8000包含修复程序的新版本。不幸的是,这会产生破坏sqlalchemy解决方法的副作用。
在sqlalchemy更改其驱动程序以尊重此补丁之前,目前最好的解决方案是pg8000从 1.16.6降级到 1.16.5 或更低版本。
您可以使用pip install pg8000<=1.16.5.
作为参考,请参阅以下对话:GH#commitcomment-43174891,GH#53。
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |