You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地正常运行的Python云函数报错:缺少必需位置参数query

问题描述
  • Python函数本地运行正常,部署到Cloud Function后报错:missing 1 required positional arguments : query
  • 问题始于2023年1月27日,此前云函数运行正常;新部署/重新部署的新旧函数均触发错误,2023年1月27日前部署的函数可正常运行
  • 使用SQLAlchemy创建数据库连接的代码如下:
from sqlalchemy.engine.url import URL

url = URL(
    drivername="mysql+pymysql",
    username="user",
    password="1234",
    host="localhost",
    port=3306,
    database="db_1"
)
  • 报错回溯信息:
Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 2073, 
in wsgi_app response = self.full_dispatch_request() File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1518, 
in full_dispatch_request rv = self.handle_user_exception(e) File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1516,
in full_dispatch_request rv = self.dispatch_request() File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1502,   
in get_DBConn_new engine = conn.get_connection_new() File "DBConnDetails.py", line 13,
in get_connection_new database = const.database TypeError: __new__() missing 1 required positional argument: 'query'
问题分析与解决

核心原因是Cloud Function环境中自动安装的SQLAlchemy版本更新到了2.0+,该版本对URL类的实例化规则做了变更:旧版本(1.4及以下)允许省略query参数直接实例化,2.0+版本则要求必须传入该参数,或改用官方推荐的构造方法。

有两种可行的解决方式:

方式一:适配SQLAlchemy 2.0+的实例化逻辑

方法1:显式传入query参数

在创建URL对象时直接传入query参数,可设为None或空字典:

from sqlalchemy.engine.url import URL

url = URL(
    drivername="mysql+pymysql",
    username="user",
    password="1234",
    host="localhost",
    port=3306,
    database="db_1",
    query=None
)

方法2:使用官方推荐的URL.create()方法

SQLAlchemy 2.0+官方推荐用create类方法构建URL,兼容性更强:

from sqlalchemy.engine.url import URL

url = URL.create(
    drivername="mysql+pymysql",
    username="user",
    password="1234",
    host="localhost",
    port=3306,
    database="db_1"
)

方式二:固定SQLAlchemy版本到旧版

在项目的requirements.txt中指定SQLAlchemy为1.4.x系列版本,强制Cloud Function安装兼容旧代码的版本:

sqlalchemy==1.4.46
pymysql
flask

内容的提问来源于stack exchange,提问作者nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:51:15