我想使用带有列名的列表来生成 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])
但问题是列数可能不同..
使用
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}''')