首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgresql表中使用区域存储客户端datimetime

在postgresql表中使用区域存储客户端datimetime
EN

Stack Overflow用户
提问于 2017-08-11 22:03:25
回答 1查看 289关注 0票数 1

我想存储访问者最后一次访问我的flask网页。

,我为其创建了db。

代码语言:javascript
复制
class TempTable(db.Model):
    __tablename__ = "tempTable"
    timeStamp = db.Column(types.Integer(), primary_key=True, autoincrement=True)
    moment = db.Column(types.Time(timezone=True)) 

    def __init__(self, tsz, moment):
        self.timeStamp = tsz
        self.moment = moment

但由于我希望访问者datetime with zone存储在上表的moment列中,所以在我的flask应用程序中,我创建了datetime with timezone,如下所示:

代码语言:javascript
复制
`datetime.datetime.now(pytz.timezone(data["timezone"])).strftime("%Y-%m-%d %H:%M %z")`

然后在tempTablemoment列中输入上面的内容。

然而,令人困惑的是,我创建的是string对象,而moment列存储的是date time对象,所以我不确定我这样做是正确的!

或者我只需要直接敲datetime.datetime.now(pytz.timezone(data["timezone"]))就行了?

EN

回答 1

Stack Overflow用户

发布于 2017-08-12 05:56:43

注:评论后更新

代码语言:javascript
复制
import datetime

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from pytz import timezone
from sqlalchemy import types

app = Flask(__name__)
app.config.update({
    'SQLALCHEMY_DATABASE_URI': "postgresql://user_pass_host_db",
})

db = SQLAlchemy(app)


class TempTable(db.Model):
    __tablename__ = "tempTable"
    id = db.Column(types.Integer(), primary_key=True, autoincrement=True)
    moment = db.Column(types.Time(timezone=True))

db.create_all()

eastern = TempTable()
warsaw = TempTable()

eastern.moment = datetime.datetime.now(timezone('US/Eastern')).strftime("%H:%M:%S %z")
warsaw.moment = datetime.datetime.now(timezone('Europe/Warsaw')).strftime("%H:%M:%S %z")
# save our records and check data from db
for i in [eastern, warsaw]:
    db.session.add(i)
    db.session.commit()

    last_moment = TempTable.query.order_by('-id').first().moment
    print('saved: time = %s' % last_moment.strftime("%H:%M:%S %z"))

输出示例:

代码语言:javascript
复制
saved: time = 14:16:39 -0400
saved: time = 20:16:39 +0200

数据库中的记录:

代码语言:javascript
复制
14:16:39 -04:00
20:16:39 +02:00

正如您所看到的,在从数据库中提取数据之后,您可以对moment执行任何操作。

顺便说一句,在您的例子中,.strftime("%Y-%m-%d %H:%M %z")并不重要,因为您为字段moment使用了types.Time(时间不是日期)。

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

https://stackoverflow.com/questions/45637147

复制
相关文章

相似问题

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