SQLAlchemy create_engine在Google Cloud Function中不起作用



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

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

运行Cloud函数时,我使用mysql+pymysql://<username>:<password>/<dbname>?unix_socket=/cloudsql/<PROJECT-NAME>:<INSTANCE-REGION>:<INSTANCE-NAME>格式的连接字符串。

Cloud函数不断为SQLAlchemy.create_engine抛出以下异常。它似乎与能够连接无关,而是由于实例化。

一切都在同一个项目中。

我还尝试过使用mysql+pymysql://<username>:<password>@<public ip address>:3306/<dbname>格式的公共IP和连接字符串,这没有什么区别。

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()
# ....

如果retrieve_and_log是您试图部署为后台云函数的函数,则它需要一个签名,如:

def retrieve_and_log(data, context):
...

它不能采用任意参数。

请参阅https://cloud.google.com/functions/docs/writing/background了解更多详细信息。

相关内容

  • 没有找到相关文章

最新更新