Дата и время выпуска Python - только год - PullRequest
0 голосов
/ 14 января 2019

Я написал программу, в которой я получаю из sql значение от дня рождения Клиента, и оно сохраняется в i=[], но я получаю много данных, где я получаю datetime.datetime(xxxxx), и мне нужен только год, потому что я хотел бы получить средний из наших клиентов.

Код:

import psycopg2

from datetime import *


#verbindung mit dem server bzw. db
try:
    conn = psycopg2.connect("dbname='test' user='test' host='192.168.1.10' password='test'")
    print ("Connectet **********")
except:
    print ("I am unable to connect to the database")
#verbindung mit der tabele
cur = conn.cursor()
try:
    cur.execute("""SELECT bday from client""")
    print ("yes")
except:
    print ("I can't drop our test database!")

result = cur.fetchall()


i = []
for row in result:
    i.append(row)

print (i)
print (len(result))

Выход:

...
(datetime.datetime(1967, 11, 7, 0, 0),), (datetime.datetime(1976, 1, 1, 0, 0),), (datetime.datetime(1978, 5, 3, 0, 0),), (datetime.datetime(1969, 6, 6, 0, 0),), (datetime.datetime(1977, 12, 26, 0, 0),), (datetime.datetime(1944, 8, 22, 0, 0),), (datetime.datetime(1954, 5, 31, 0, 0),), (datetime.datetime(1942, 12, 4, 0, 0),), (datetime.datetime(1967, 10, 16, 0, 0),), (datetime.datetime(1941, 7, 1, 0, 0),), (datetime.datetime(1937, 5, 17, 0, 0),), (datetime.datetime(2006, 6, 5, 0, 0),), (datetime.datetime(1996, 11, 25, 0, 0),), (datetime.datetime(1975, 3, 2, 0, 0),), (datetime.datetime(2007, 10, 22, 0, 0),), (datetime.datetime(1996, 7, 26, 0, 0),), (datetime.datetime(1991, 4, 4, 0, 0),), (datetime.datetime(1938, 11, 29, 0, 0),), 
....

Мне нужна помощь в решении этой проблемы.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Вот версия вашего кода, которая делает то, что вы хотите:

import psycopg2
import datetime


# verbindung mit dem server bzw. db
try:
    conn = psycopg2.connect("dbname='test' user='test' host='192.168.1.10' password='test'")
    print("Connectet **********")
except:
    print("I am unable to connect to the database")
# verbindung mit der tabele
cur = conn.cursor()
try:
    cur.execute("""SELECT bday from client""")
    print("yes")
except:
    print("I can't drop our test database!")

rows = cur.fetchall()

i = [row.year for row, *_ in rows]

print(i)
print(len(i))
0 голосов
/ 14 января 2019

psycopg возвращает кортежи, если вы получаете только 1 столбец из db, он возвращает список кортежей с 1 элементом [("a", ), ("a", )...]

Поскольку вы получаете дату и время, вы можете получить только год, например row[0].year

for row in result:
    i.append(row[0].year)
print(i)

или как это

i = [row[0].year for row in result]
print(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...