我想从托管在 PSQL 上的数据库中的列中提取特定值

I want to extract specific value from a column in a database which is hosted on PSQL

我想从 table 的列中提取特定值,但我不能这样做,因为我在 python 中的做法是将特定值保留在 "" 而不是 ' '.所以我想知道是否有办法做到这一点。在下面,您可以看到我尝试过的查询片段。

query = sql.SQL("SELECT {fields} FROM {table} WHEN {col_name} = {var}").format(fields=sql.SQL(',')
        .join([sql.Identifier(cols[0]),sql.Identifier(cols[1]),]),table=sql.Identifier(table),col_name=sql
        .Identifier(cols[1]),var=sql.Identifier(var))

以下是使用

打印的查询
print(query.as_string(conn))

SELECT "column1","column2" FROM "table" WHEN "column2" = "string_value"

我想知道我是否可以使用类似“column2”= 'string_value' 的东西来解决我的问题。

提前致谢。

var 应该是一个 sql.Placeholder,它将在执行查询时由 psycopg2 插入:

from psycopg2 import sql

cols = ('c1', 'c2')
table = "foo"
var = "value"

query = sql.SQL("SELECT {fields} FROM {table} WHEN {col_name} = {var}").format(
    fields=sql.SQL(',').join(
        [
            sql.Identifier(cols[0]),
            sql.Identifier(cols[1]),
        ]
    ),
    table=sql.Identifier(table),
    col_name=sql.Identifier(cols[1]),
    var=sql.Placeholder()
)

print(query.as_string(con))
print(cur.mogrify(query, (var, )).decode('utf-8'))
# cur.execute(query, (var, ))

输出:

SELECT "c1","c2" FROM "foo" WHEN "c2" = %s
SELECT "c1","c2" FROM "foo" WHEN "c2" = 'value'