如何借助列表参数化表列创建?

问题描述 投票:0回答:1

我想使用带有列名的列表来生成 CREATE TABLE

sql
脚本。

我想创建一个函数。

def create_table(column_names: List[str]):
    pass

示例:

Input ["col1", "col2", "colN"]

输出:

psycopg2.sql.SQL('''CREATE TABLE my_table (
        created_ts TIMESTAMPTZ,
        col1 BYTEA,
        col2 BYTEA,
        ...
        colN BYTEA''')

最后我要执行这个SQL语句

我读到了

import psycopg2
from psycopg2 import sql

columns = ["col1", "col2", "colN"]

stmt = sql.SQL('''CREATE TABLE my_table (
    created_ts TIMESTAMPTZ,
    {} BYTEA,
    {} BYTEA,
    {} BYTEA,
    ''').format(columns[0], columns[1], columns[2])

但问题是列数可能不同..

python psycopg2
1个回答
0
投票

使用

join()
动态构造 SQL。

columns = ["col1", "col2", "colN"]

cols_sql = ', '.join(f'{col} BYTEA' for col in columns)
stmt = sql.SQL(f'''CREATE TABLE my_table (
    created_ts TIMESTAMPTZ,
    {cols}''')
© www.soinside.com 2019 - 2024. All rights reserved.