使用 SQLAlchemy 通过 unix 套接字连接到数据库

Mar*_*ffx 13 postgresql sqlalchemy unix-socket google-cloud-sql google-cloud-functions

我正在尝试使用云函数中的 SQLAlchemy 连接到我的云 SQL 数据库,但我似乎无法计算出正确的连接字符串。

DATABASE_URL=postgres://$DB_USER:$_DB_PWD@/$DB_NAME?unix_socket=/cloudsql/$DB_INSTANCE
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

pyscopg2.ProgrammingError: invalid dns: invalid connection option "unix_socket"
Run Code Online (Sandbox Code Playgroud)

通过 unix socket 连接到 Postgresql 9.6 DB 的正确方法是什么pyscopg2

mat*_*tch 8

这里需要的特殊关键字是host

DATABASE_URL=postgres://user:password@/dbname?host=/path/to/db
Run Code Online (Sandbox Code Playgroud)

请注意,路径中的路径host应该是路径,而不是套接字文件本身(psycopg2 假定套接字具有标准命名约定.s.PGSQL.5432

https://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#unix-domain-connections

  • 令人不安的是,官方文档显示了一个 `unix_sock` 查询参数,导致 pyscopg2 崩溃... => https://cloud.google.com/sql/docs/postgres/connect-run#connect_to 所以我真的很高兴我遇到了这个线程! (3认同)
  • 无论出于何种原因,这对我来说不起作用,而且我也面临着OP的问题。 (2认同)
  • 对我有用,请确保不要在连接字符串的末尾添加“.s.PGSQL.5432”,仅在其所在的目录中添加“.s.PGSQL.5432” (2认同)