我想從表中的列中提取特定值,但我不能這樣做,因為我在 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' 之類的東西來解決我的問題。
提前致謝。
uj5u.com熱心網友回復:
var應該是 a 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'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/403729.html
標籤:
上一篇:即使使用AsNoTracking也無法跟蹤物體型別的實體
下一篇:從另一個表中的值更新jsonb列
