我想以编程方式从表中的python(psycopg2)中传递几列。
cursor.execute("SELECT col1,col2,col3...coln FROM %s ORDER BY datetime ASC" %mytable)
列名col1,col2,col3 ... coln的长度可以是100,并且每次调用cursor.execute()时都会更改。
答案 0 :(得分:2)
您已经在使用字符串插值,因此您可以对列名执行相同的操作。将列名称放在数组中并在格式化查询时将它们连接起来:
columns = ['col1', 'col2', 'col3']
cursor.execute("SELECT %s FROM %s ORDER BY datetime ASC" % (','.join(columns), mytable))
重要的是,列必须由您严格控制,而不是从用户输入生成,因为这将启用SQL注入攻击。