无法使用 python 从 postgres table 将数据提取到 .ods 文件
Unable to extract data from postgres table to .ods file, using python
我正在尝试使用以下代码在 ods 文件中收集 postgres 查询的输出。我创建了一个函数 read_table
可以成功读取 postgres table。
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)
table 打印在 python shell 上,但未写入 .ods 文件。它给出以下错误:
raw_data.update({'DATA':raw_data})
AttributeError: 'NoneType' object has no attribute
如何保存和提取 ods 文件中的 table?所有的包和模块都已安装,但我仍然收到此错误。
我是python的新手,所以请指导我。
我在 Ubuntu 上使用 Postgres 数据库,使用 Idle3。
您的方法 raw_data 没有 return 任何东西。您不想打印行,而是希望 return 它们或产生它们,如下所示: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-docs/stable/generated/pandas.DataFrame.to_excel.html
我正在尝试使用以下代码在 ods 文件中收集 postgres 查询的输出。我创建了一个函数 read_table
可以成功读取 postgres table。
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)
table 打印在 python shell 上,但未写入 .ods 文件。它给出以下错误:
raw_data.update({'DATA':raw_data})
AttributeError: 'NoneType' object has no attribute
如何保存和提取 ods 文件中的 table?所有的包和模块都已安装,但我仍然收到此错误。
我是python的新手,所以请指导我。 我在 Ubuntu 上使用 Postgres 数据库,使用 Idle3。
您的方法 raw_data 没有 return 任何东西。您不想打印行,而是希望 return 它们或产生它们,如下所示: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-docs/stable/generated/pandas.DataFrame.to_excel.html