如何使用以其他 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()]
如果你想把它们都变成文字。
我有一个 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()]
如果你想把它们都变成文字。