如何在Python中打印PostgreSQL的CURRENT_TIMESTAMP?

时间:2019-06-27 06:52:42

标签: python postgresql psycopg2 timestamp-with-timezone

我正在使用psycopg2的CURRENT_TIMESTAMP关键字来分配我的SQL对象的creationDate属性:

def createDuck(data):
""" Creates a new ducky in the Duck table. """

keys = ['color', 'species', 'numberOfFeathers', 'creationDate']
# Insert all values except the last one because it's the date
dataToInsert = [data.get(k) for k in keys[:-1] ]

with transaction() as (conn, cur):
    query = sql.SQL('INSERT INTO {} ({}) VALUES ({}, CURRENT_TIMESTAMP) RETURNING id;').format(
        sql.Identifier('Duck'),
        sql.SQL(', ').join(map(sql.Identifier, keys )),
        sql.SQL(', ').join(map(sql.Literal, dataToInsert))
    ) 
    cur.execute(query)
    return cur.fetchone()['id']

到目前为止,运行此代码段可创建鸭子,creationDate看起来像日期:2019-06-26 14:29:23.480065+00

现在,我需要使用SQL Duck表中的数据创建一个鸭子作为python对象。

因此,我将所有鸭子都叫了起来,将它们放在列表中,并为每个列表条目创建了它的python twin:

def getAllDucks(self):
        with transaction() as (conn,cur):
            query = sql.SQL('SELECT * FROM {};').format(
                sql.Identifier('Ducks')
            )
            cur.execute(query)
            ducksInTable = cur.fetchall()
            listOfDucks = []
            for row in ducksInTable:
                ducky = Duck(dict(row))
                listOfDucks.append(ducky)                
            return listOfDucks

但是,这里的问题是,当我打印鸭子的所有属性时,creationDate现在看起来像这样:

datetime.datetime(2019, 6, 26, 14, 29, 23, 480065, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))

现在,我知道CURRENT_TIMESTAMP是PostgreSQL的特殊关键字。但是我需要将日期显示在SQL列表中的python列表中。

在打印Python的鸭子列表时,是否可以显示PostgreSQL中的creationDate

我想打印自己的函数,但是如果python中不存在这样的功能,我会感到惊讶。

0 个答案:

没有答案