Postgres (psycopg2) 阻止用户更改运行时配置参数

Postgres (psycopg2) prevent user from changing runtime configuration parameters

我正在尝试为用户建立一个完全只读的连接,以便 运行 查询我数据库中的架构。虽然用户在 my_schema 中的表中只有 SELECT 权限,但我仍然可以在游标中 运行 SET {param}。它持续存在,下一个使用另一个游标的查询具有新参数。

我试过使用 psycopg2.set_session(readonly=True) 无济于事。我找不到有关使用 psql 终端撤销用户此权限的信息,因此我怀疑它是特定于连接的。但是,我仍然找不到有关使用 psycopg2 执行此操作的任何信息。

import psycopg2

readonly_conn = psycopg2.connect(READONLY_DATABASE_URL)
cur = readonly_conn.cursor()
cur.execute("SET search_path TO my_schema,public")
cur.close()

来自docs

SET only affects the value used by the current session.

一个会话大概等于一个TCP连接,它可以“包含”多个游标。