我看到了GCP快速入门(https://cloud.google.com/sql/docs/mysql/quickstart-connect-functions(,并尝试将Google cloud functions连接到Cloud SQL的My SQL。实际上该网站正在使用HTTP触发器,但我想使用GCS中的"完成/创建"操作作为云功能的触发器。因此,我使用以下python代码和txt代码。
【主要。PY】
import sqlalchemy
from google.cloud import storage
# Set the following variables depending on your specific
# connection name and root password from the earlier steps:
def sql_select(data, context):
connection_name = "INSTANCE_CONNECTION_NAME"
db_password = "DATABASE_USER_PASSWORD"
db_name = "DATABASE_NAME"
db_user = "root"
driver_name = 'mysql+pymysql'
query_string = '"unix_socket": "/cloudsql/{}".format(connection_name)'
print("I am here 1")
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name,
query={query_string},
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800)
# stmt = sqlalchemy.text('INSERT INTO entries (guestName, content) values ("third guest", "Also this one");')
# try:
# with db.connect() as conn:
# conn.execute(stmt)
# except Exception as e:
# return 'Error: {}'.format(str(e))
# return 'ok'
【要求.TXT】
SQLAlchemy==1.3.18
PyMySQL==0.9.3
Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
Pillow==5.4.1
qrcode==6.1
six==1.12.0
Werkzeug==0.14.1
google-cloud-storage==1.23.0
我尝试通过按"测试功能"选项卡来测试代码。但是我有以下错误,无法将我制作的云功能连接到云SQL(我的SQL(。
【错误信息】
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
'set' object has no attribute 'get'
我试图更改为最新版本的sqlalchemy。但我无法解决错误。 而且我不知道解决问题。 是否有任何解决方案可以将云功能连接到云 SQL? 谢谢
您引用的链接应该为您提供几乎所有您需要的东西。
您应该能够 (!?( 为 GCS 存储桶事件触发该函数,但您需要确保正确部署该函数:
请参阅:https://cloud.google.com/functions/docs/calling/storage#object_finalize
您需要import sqlalchemy
.您已将包包含在requirements.txt
但错过了第二步。
创建云SQL实例,数据库等后,您需要更新connection_name
,db_password
等的值。
我认为您的query_string
陈述不正确,最好是:
query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
这可能是错误的起源。