如何在Python上的SQL命令中将Datetime作为参数发送?
我有一个sql命令,只想选择一些具有某些条件的记录(使用python&db is Postres): 因此,我的问题是:如何在Python上的SQL命令中将Datetime作为参数发送?,python,postgresql,datetime,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 "D
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...
^
数据库中的所有“日期”字段类似于: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,
)
如何在我的数据库中选择格式如下的“日期” 您没有说明正在使用哪个模块连接到postgresql。让我们暂时假设它是
psycopg2
在这种情况下,可以使用以下方法将参数传递给查询:
current_date = datetime.now()
self.db.execute(
'SELECT Id, RubricId, IsRubric '
'FROM whis2011.CoockieUserInterests '
'WHERE UserId = %s AND Date = %s',
(Id, current_date))
注意,我们不是在这里对sql字符串使用%
插值运算符。相反,我们使用%s
标记sql参数,然后将它们分别传递给
如果您使用不同的包连接到Postgres,那么它可能会以不同的方式标记参数。有关详细信息,请查看文档或模块。您很容易受到攻击。你需要阅读这个问答:我用的是“momoko”,我没有游标!当然,即使粗略阅读文档也会告诉您,
momomoko
是psycopg2
的包装器,并且一个方法像光标一样接受参数。执行会吗?我更改了,但仍然出错,我用连接池更新了代码,也许看看代码中发生了什么有用!你也会犯同样的错误吗?您最初的错误是因为您没有将引号括起来。但是这个参数化的答案不需要引用。请告知。