如何使用以其他 table 中的值命名的列创建 table

How to create a table with columns named after values in other table

我有一个 table,称它具有列 attr_name。如何使用 attr_name 中每一行的值创建一个新的 table?我想我很接近

conn=psycopg2.connnect("dbname='{}' user='{}' password='{}' host='{}'".format(db, username, password, host))


cur = conn.cursor()
cur.execute("SELECT attr_name FROM {}.{};".format(schema, tableName))

for row in cur:
    print(row)#this works as expected

cur.execute("CREATE TABLE {}.proj_attr ({}, {},…,{});".format(newTableName))

我需要填写({}, {},...,{})

如果要创建列:

columns = ["id serial primary key", "name text"]

您可以使用:

cur.execute("CREATE TABLE {}.proj_attr ({})".format(newTableName, ", ".join(columns))

你没有提到列是什么类型,但你可以使用:

 columns = ["%s text" %(row[0], ) for row in cur.fetchall()]

如果你想把它们都变成文字。