psycopg2 cursor.execute()传入变量表名和项

时间:2015-08-01 09:09:15

标签: postgresql python-2.7 psycopg2

我试图使用psycopg2从postgres数据库中的特定表中获取某组对象。我在将变量传递给cursor.execute(SQL)命令时看到的所有建议似乎都不适用于两种类型的变量

这是我累的第一个没有工作的东西:

SQL = 'SELECT * FROM %s WHERE created_on < date (%s);'
cursor.execute(SQL,[(table_name), (time_from)])

这总是返回插入table_name的语法错误

2 个答案:

答案 0 :(得分:2)

如Antoine的评论所述,documentation现在建议使用这种方法来编写表名。

class x(object):
    x = 10    # class variable
    def method1(self,v1):
       x = v1   # method variable
       # here I want to access class variable

答案 1 :(得分:0)

这是我的解决方案:

SQL1 = 'SELECT * FROM %s' %table_name
SQL2 = SQL1+' WHERE created_on < date (%s);'
cursor.execute(SQL2, (time_from, ))

表名不能以正常方式传递,因为它们被转换为SQL命令中的对象