执行 "SHOW DATABASES LIKE" 查询时如何解决 psycopg SyntaxError?

How to solve psycopg SyntaxError while executing "SHOW DATABASES LIKE" query?

我使用 Windows 11,Python 3.10.4 64 位,PostgreSQL 14.2 数据库和 psycopg2 2.9.3。

我连接到数据库:

import psycopg2

SCHEMA_NAME = "myschema"

connx = psycopg2.connect(database="mydatabase", user="myadmin", password="123456", host="127.0.0.1", port="5432", options="-c search_path=myschema")

cur = connx.cursor()

然后我想检查模式是否存在:

sql_str = "SHOW DATABASES LIKE %s ESCAPE ''"
cur.execute(sql_str, [SCHEMA_NAME])

但我收到以下错误:

Traceback (most recent call last):

    cur.execute("SHOW `DATABASES` LIKE %s ESCAPE ''", [SCHEMA_NAME])
psycopg2.errors.SyntaxError: syntax error at or near "LIKE"
LINE 1: SHOW DATABASES LIKE 'myschema' ESCAPE ''

这里有什么问题?

在 PostgreSQL 中,schemadatabase 是两个不同的东西。

以下查询将告诉您架构是否存在。

SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'myschema';

你的代码变成

sql_str = "SELECT schema_name FROM information_schema.schemata WHERE schema_name =  %s ;"
cur.execute(sql_str, [SCHEMA_NAME])

如果您要检查数据库是否存在,它将是

SELECT datname FROM pg_catalog.pg_database WHERE datname='dbname'; 

你的代码将变成

sql_str = "SELECT datname FROM pg_catalog.pg_database WHERE datname =  %s ;"
cur.execute(sql_str, [DATABASE_NAME])