首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python上的SQL命令中将Datetime作为参数发送?

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

Stack Overflow用户
提问于 2016-10-04 21:39:33
回答 1查看 4.8K关注 0票数 2

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

代码语言:javascript
复制
 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]

问题:当我想将日期时间传递给输入“日期”时,我得到了错误:

代码语言:javascript
复制
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

此外,数据库中字段"Date“的数据类型是”没有时区的时间戳“。

这是我的游泳池

代码语言:javascript
复制
    application.db = momoko.Pool(
    dsn='dbname=xxxx user=xxxxx password=xxxxx host=xxxx port=5432',
    size=1,
    ioloop=ioloop,
)

我如何选择这样的格式在我的数据库中的“日期”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-04 21:54:57

您没有说明用于连接postgresql的模块。让我们暂时假设它是psycopg2

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

代码语言:javascript
复制
current_date = datetime.now()

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

注意,我们是,而不是,这里使用的是%内插运算符。相反,我们使用%s标记sql参数,然后将它们分别传递给cursor.execute

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39862199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档