我在postgresql中有一张名为mytable的表格,我需要从一个Python应用程序中将该表格的内容打印到标准输出(stdout)。
目前我的操作如下:
conn = psycopg2.connect("dbname=postgres user=postgres password=psswd")
cur = conn.cursor()
cur.copy_to(sys.stdout,'mytable',sep = '\t')
然而,在某些列之间打印时,我得到了一些“\N”。我相信这种情况发生的原因是在打印过程中,该行超出并进入下一行,因此这些“\N”显示出来。
输出:
E0307 1 M 400 Ethan UTDallas 12.98580404 \N 50.79403657 1
E0307 1 M 400 Lucas Baylor 15.18511175 \N 56.87285183 3
E0307 1 M 400 Jackson Baylor 13.64228411 \N 56.87285183 3
E0307 1 M 400 Jacob Baylor 13.19878974 \N 56.87285183 3
E0307 1 M 400 Samuel Baylor 14.84666623 \N 56.87285183 3
我的问题如下:
如何消除输出中的 \N?有没有其他打印表格的方法?我试图避免执行整个“SELECT * FROM my_table”查询的方式。只需使用要打印的表格名称即可。
此外,在打印时如何获取表头?我尝试了以下内容:
cur.execute("COPY mytable TO STDOUT with csv header")
我收到了这个错误消息:
ProgrammingError: can't execute COPY TO: use the copy_to() method instead
此外,我不确定这是否是最好的方法。但是这是我尝试过的事情 :)
my_table
或another_attempt
行起作用。一个使用标准的pd_read_sql
,第二个使用pd.io.sql
,我发现它专门用于连接到 postgres。好奇哪个有效,或者两个都有效。 - Max Power