Создать разделенную запятыми строку из вывода функции psycopg2 fetchall - PullRequest
0 голосов
/ 14 января 2020

Используя python psycopg2, у меня есть следующий код:

conn = psycopg2.connect(host=endpoint ,database=database, user=user, password=password)
cur = conn.cursor()
cur.execute("select * from pg_stat_activity;")
records = cur.fetchall()
for record in records:
    print(record)

этот код выводит записи, которые выглядят как:

(16391, 'app', 9233, 16389, 'app', '', '10.20.12.17', None, 55204, datetime.datetime(2020, 1, 14, 1, 43, 19, 214161, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), datetime.datetime(2020, 1, 14, 1, 43, 19, 410905, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), datetime.datetime(2020, 1, 14, 1, 43, 19, 442050, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), datetime.datetime(2020, 1, 14, 1, 43, 19, 442051, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), None, None, 'active', None, '22332', 'select * from pg_stat_activity;')
...
...

он отображает вызовы функций как:

datetime.datetime(2020, 1, 14, 1, 43, 19, 214161, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))

однако, я действительно хочу, чтобы он отображал строковый вывод функции, например:

2019-12-20 01:59:33.270944+00

Как я могу заставить psycopg2 отображать это для меня?

Спасибо.

1 Ответ

1 голос
/ 14 января 2020

Используйте datetime.strftime() для форматирования элемента datetime.

for record in records:
    l = list(record[0:9])
    # format times in elements 9-12
    for i in range(9, 13):
        l.append(record[i].strftime('%Y-%m-%d %H:%M:%S.%f%z')
    l += record[13:]
    print(l)
...