Python SQLAlchemy create_引擎在Google云功能中不工作

Python SQLAlchemy create_引擎在Google云功能中不工作,python,mysql,google-cloud-platform,sqlalchemy,google-cloud-functions,Python,Mysql,Google Cloud Platform,Sqlalchemy,Google Cloud Functions,我正在尝试运行一个谷歌云功能,从一个网站收集数据,然后将其插入到一个云SQL(MySQL)数据库中,但是在我的本地机器上没有出现在云计算中的SQLAlchemy问题有什么建议吗 当我使用云SQL代理和SQLAlchemy在本地针对Py3.7(在Mac上,不使用virtualenv)运行函数时,我成功地连接到了数据库 在运行Cloud函数时,我使用以下格式的连接字符串mysql+pymysql://:/?unix_socket=/cloudsql/: 云函数一直为SQLAlchemy.create

我正在尝试运行一个谷歌云功能,从一个网站收集数据,然后将其插入到一个云SQL(MySQL)数据库中,但是在我的本地机器上没有出现在云计算中的SQLAlchemy问题有什么建议吗

当我使用云SQL代理和SQLAlchemy在本地针对Py3.7(在Mac上,不使用virtualenv)运行函数时,我成功地连接到了数据库

在运行Cloud函数时,我使用以下格式的连接字符串
mysql+pymysql://:/?unix_socket=/cloudsql/:

云函数一直为SQLAlchemy.create\u引擎抛出以下异常。它似乎与能够连接无关,但与实例化有关

一切都在同一个项目中

我还尝试过使用公共IP和连接字符串,格式为
mysql+pymysql://:@:3306/
,这没有什么区别

Traceback (most recent call last):
  File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", line 449, in run_background_function
    _function_handler.invoke_user_function(event_object)
  File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", line 268, in invoke_user_function
    return call_user_function(request_or_event)
  File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", line 265, in call_user_function
    event_context.Context(**request_or_event.context))
  File "/user_code/main.py", line 14, in retrieve_and_log
    engine = create_engine(connection_string,echo=True)
  File "/env/local/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 500, in create_engine
    return strategy.create(*args, **kwargs)
  File "/env/local/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 56, in create
    plugins = u._instantiate_plugins(kwargs)
AttributeError: 'Context' object has no attribute '_instantiate_plugins'
以下是我的代码片段:

import requests
from bs4 import BeautifulSoup
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String

def retrieve_and_log(store_string, connection_string = 'mysql+pymysql://<username>:<password>/<dbname>?unix_socket=/cloudsql/<PROJECT-NAME>:<INSTANCE-REGION>:<INSTANCE-NAME>'):

    engine = create_engine(connection_string,echo=True)
    
    conn = engine.connect()
    # ....


导入请求
从bs4导入BeautifulSoup
从sqlalchemy导入创建引擎、元数据、表、列、整数、字符串
def检索_和_日志(存储_字符串,连接_字符串='mysql+pymysql://:/?unix_套接字=/cloudsql/:'):
引擎=创建引擎(连接字符串,echo=True)
conn=引擎连接()
# ....

如果
检索\u和\u日志
是您试图作为后台云函数部署的函数,它需要一个签名,如:

def检索和日志(数据、上下文):
...
它不能接受任意参数


有关更多详细信息,请参阅。

如果使用在中使用的SQLAlchemy连接字符串生成器,是否也会发生这种情况?@RafaelLemos,是的,它仍然会发生。达斯汀的回答成功了。太好了,很高兴听到!别忘了把答案标为已接受。