我编写了一个程序,该程序从Klients生日的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),),
....
我需要解决此问题的帮助。
答案 0 :(得分:0)
psycopg返回元组,如果您仅从数据库中获得1列,则它返回包含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)
答案 1 :(得分:0)
这是您执行所需代码的版本:
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))