Я использую ключевое слово CURRENT_TIMESTAMP
psycopg2, чтобы назначить атрибут creationDate
моего объекта SQL:
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
Теперь мне нужно создать утку как объект python с данными из моей таблицы SQL Duck.
Итак, я вызываю всех своих уток, помещаю их в список, и для каждой записи в списке я создаю своего двойника-питона:
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. Но мне нужно, чтобы моя дата отображалась в моем списке Python, как это выглядит в таблице SQL.
Есть ли способ отобразить creationDate
, как это выглядит в PostgreSQL при печати моего списка уток Python?
Я думал о печати своей собственной функции, но я был бы удивлен, если бы такая функция еще не существовала в python.