PostgreSQL在python中以编程方式选择列名

PostgreSQL在python中以编程方式选择列名,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,我希望以编程方式在表中传递python(psycopg2)中的几个列 cursor.execute("SELECT col1,col2,col3...coln FROM %s ORDER BY datetime ASC" %mytable) 列名col1、col2、col3…coln的长度可以是100,并且每次调用cursor.execute()时都会更改。您已经在使用字符串插值,因此可以对列名执行相同的操作。将列名放入数组中,并在格式化查询时将其合并: columns = ['col1'

我希望以编程方式在表中传递python(psycopg2)中的几个列

  cursor.execute("SELECT col1,col2,col3...coln FROM %s ORDER BY datetime ASC" %mytable)

列名col1、col2、col3…coln的长度可以是100,并且每次调用cursor.execute()时都会更改。

您已经在使用字符串插值,因此可以对列名执行相同的操作。将列名放入数组中,并在格式化查询时将其合并:

columns = ['col1', 'col2', 'col3']
cursor.execute("SELECT %s FROM %s ORDER BY datetime ASC" % (','.join(columns), mytable))

列必须严格由您控制,而不是由用户输入生成,这一点很重要,因为这会导致SQL注入攻击。

我做了一个解决方法。columns=['col1','col2','col3']columnsstr=','。join(map(str,columns))querystring='SELECT'+columnsstr+'从%s ORDER BY timeentry ASC'游标中。execute(querystring%mytable)非常简洁明了的答案。非常感谢。