在PostgreSQL中混合%s和{}占位符

时间:2019-02-05 23:20:40

标签: sql python-3.x postgresql

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

在下面提供的示例中,query1失败了,但查询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)

0 个答案:

没有答案