Flask SQLalchemy 无法使用 Unix 套接字连接到 Google Cloud Postgresql 数据库

Isa*_*aac 4 postgresql google-app-engine python-3.x flask-sqlalchemy google-cloud-sql

我在我的谷歌应用引擎标准环境项目中使用 Flask SQLalchemy 来尝试连接到我的 GCP Postgresql 数据库.. 根据谷歌文档,可以以这种格式创建 url

# postgres+pg8000://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
Run Code Online (Sandbox Code Playgroud)

下面是我的代码

from flask import Flask, request, jsonify
import constants

app = Flask(__name__)

# Database configuration from GCP postgres+pg8000
DB_URL = 'postgres+pg8000://{user}:{pw}@/{db}?unix_socket=/cloudsql/{instance_name}'.format(user=user,pw=password,db=dbname, instance_name=instance_name)

app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # silence the 
deprecation warning
sqldb = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

这是我不断收到的错误:

File "/env/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 412, in connect return self.dbapi.connect(*cargs, **cparams) TypeError: connect() got an unexpected keyword argument 'unix_socket'
Run Code Online (Sandbox Code Playgroud)

kur*_*svg 5

指定 unix 套接字的参数因您使用的驱动程序而异。根据pg8000 文档,您需要使用unix_sock代替unix_socket.

要在应用程序的上下文中看到这一点,您可以查看此示例应用程序

  • 我能够通过将 /cloudsql/INSTANCE_CONNECTION_NAME/.s.PGSQL.5432 添加到 url 来修复它 (3认同)