Я пытаюсь собрать вывод postgres-запроса в ods файле, используя следующий код. Я создал функцию read_table
которая успешно читает таблицу postgres.
def read_table()
import psycopg2 as ps
import sys
con =None
try:
con=ps.connect("host, dbname, user,pwd....")
cur=con.cursor()
cur.execute("Select * from table_name")
rows=cur.fetchall()
for(row in rows):
print(row)
cur.close()
except (Exception, ps.DatabaseError) as error:
print(error)
finally:
if con is not None:
con.close()
from collections import OrderedDict
from pyexcel_ods import save_data
data=OrderedDict()
raw_data=read_table()
raw_data.update({'DATA':raw_data})
save_data("/home/myfile.ods", raw_data)
Таблица печатается на оболочке python, но она не записывается в файл.ods. Это дает следующую ошибку:
raw_data.update({'DATA':raw_data})
AttributeError: 'NoneType' object has no attribute
Как сохранить и извлечь таблицу в ods файле? Все пакеты и модули установлены, но все же я получаю эту ошибку.
Я новичок в питоне, поэтому, пожалуйста, направляйте меня. Я использую базу данных Postgres на Ubuntu, используя Idle3.
Ваш метод raw_data ничего не возвращает. Вместо того, чтобы печатать строки, вы хотите вернуть их или получить их так: return row
или yield row
вместо print(row)
Тем не менее, вы можете сделать то, что вам нужно, в нескольких строках кода с помощью библиотеки pandas: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql_query.html https://pandas.pydata.org/панды-документы/стабильный/полученные /pandas.DataFrame.to_excel.html