如何在Python上的SQL命令中将Datetime作为参数发送?

时间:2016-10-04 21:39:33

标签: python postgresql datetime

我有一个sql命令,只想选择一些条件的记录(使用python& db is Postres): 所以,我的查询是:

 current_date= datetime.now()

  tt = yield self.db.execute(self.db.execute('SELECT "Id", "RubricId", "IsRubric"  
     FROM whis2011."CoockieUserInterests"
     'WHERE "UserId" = %s AND "Date" = %s '
     % (Id, current_date))

result=tt.fetchall()[0]

问题:当我想将datetime传递给字段" Date"我收到了错误:

syntax error at or near "00"
LINE 1: ...rests" WHERE "UserId" = 1 AND "Date" = 2016-10-05 00:22:07.3...
                                                         ^

所有"日期" db中的字段如下:2016-09-25 00:00:00

此外,字段的数据类型"日期"在数据库中是"时区没有时区"。

它是我的游泳池:

    application.db = momoko.Pool(
    dsn='dbname=xxxx user=xxxxx password=xxxxx host=xxxx port=5432',
    size=1,
    ioloop=ioloop,
)

我如何选择"日期"在我的数据库中使用这样的格式?

1 个答案:

答案 0 :(得分:1)

您没有说明用于连接postgresql的模块。我们假设它是distance1 = pair.pairwise_distances(df1, metric='euclidean')的过渡时期。

在这种情况下,您可以使用以下命令将参数传递给查询:

psycopg2

请注意,我们在 上使用sql字符串上的current_date = datetime.now() self.db.execute( 'SELECT Id, RubricId, IsRubric ' 'FROM whis2011.CoockieUserInterests ' 'WHERE UserId = %s AND Date = %s', (Id, current_date)) 插值运算符。相反,我们使用%来标记sql参数,然后将它们分别传递给cursor.execute

如果您使用其他软件包连接到Postgres,则可能会以不同的方式标记参数。有关详细信息,请查看文档或模块paramstyle