python-3.x - Flask SQLalchemy 无法使用 Unix 套接字连接到 Google Cloud Postgresql 数据库

标签 python-3.x postgresql google-app-engine flask-sqlalchemy google-cloud-sql

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

# postgres+pg8000://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>

下面是我的代码

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)

这是我不断收到的错误:

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'

最佳答案

指定 unix 套接字的参数因您使用的驱动程序而异。根据pg8000 docs ,您需要使用 unix_sock 而不是 unix_socket

要在应用程序的上下文中看到这一点,您可以看一下 sample application .

关于python-3.x - Flask SQLalchemy 无法使用 Unix 套接字连接到 Google Cloud Postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53773578/

相关文章:

python-3.x - 如何在运行 pytest 测试之前安装 python 插件?

python-3.x - Flask - 中止时的自定义错误消息

python - 如何在对另一列进行排序的同时对一列进行分组?

postgresql - 在plpgsql中初始化多维数组

c# - .Net DateTime.Now 与 PostgreSQL 时间戳比较

google-app-engine - 如何以编程方式访问安全且经过身份验证的 Appengine 应用程序

google-app-engine - Google App 引擎应用程序的 IP 地址

numpy - 在 Python 3.2 中使用 Matplotlib 的 strpdate2num 时出现类型错误

sql - PostgreSQL jsonb 更新多个嵌套字段

java - 如果实体的祖先不存在,是否会创建它(Java API)?