我想从托管在 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'
我想从 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'