首页 > 解决方案 > 在 postgresql 中混合 %s 和 {} 占位符

问题描述

我正在尝试将 schema.table_name 设置为一个变量,但我也想传递一个整数查询 1 当我将它放在 python 控制台中时工作正常,但是当我通过 gui 调用它时它会崩溃。它仅在 %s 存在时崩溃。我该如何处理这种问题?

在下面提供的示例中,查询 1 出现问题,但查询 2 有效。

如您所见,我已经导入了两个必要的库。

import psycopg2
from psycopg2 import sql 

sample = 10

conn = psycopg2.connect("<details>")
cur = conn.cursor()
print('tables dropped')
query1 = sql.SQL("""CREATE TABLE {}.{} AS 
    (SELECT * FROM {}.{} TABLESAMPLE BERNOULLI (%s));""").format(
    *map(sql.Identifier, (schema, table_name_top, schema, top_point_cloud))), sample
query2 = sql.SQL("""CREATE TABLE {}.{} AS 
        (SELECT * FROM {}.{} TABLESAMPLE BERNOULLI (10));""").format(
        *map(sql.Identifier, (schema, table_name_base, schema, base_point_cloud)))
print('query created')
cur.execute(query1)
cur.execute(query2)

标签: sqlpython-3.xpostgresql

解决方案


推荐阅读