Невозможно извлечь данные из таблицы postgres в файл .ods, используя python - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь собрать выходные данные запроса 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-файле?Все пакеты и модули установлены, но все равно я получаю эту ошибку.

Я новичок в python, поэтому, пожалуйста, помогите мне.Я использую базу данных Postgres в Ubuntu, использую Idle3.

1 Ответ

0 голосов
/ 07 сентября 2018

Ваш метод raw_data ничего не возвращает. Вместо того, чтобы печатать строки, вы хотите вернуть их или выдать их, например, так: return row или yield row вместо print(row)

Однако, с помощью библиотеки панд можно сделать то, что вам нужно, в несколько строк кода: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql_query.html https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html

...