我正在使用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中不存在这样的功能,我会感到惊讶。