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

时间:2015-07-28 21:53:01

标签: python postgresql psycopg2

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

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))

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

1 个答案:

答案 0 :(得分:0)

如果要创建列:

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()]

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