私はmytableという名前のpostgresqlのテーブルを持っています。このテーブルの内容をpythonアプリケーションからstdoutに出力する必要があります。pythonの標準出力にpostgresqlテーブルを出力する
conn = psycopg2.connect("dbname=postgres user=postgres password=psswd")
cur = conn.cursor()
cur.copy_to(sys.stdout,'mytable',sep = '\t')
は、しかし、私はその一部の列の間に印刷されたいくつかの「\ n」を得る:
私は現在、次のやっています。私はこれが起こる理由は、印刷プロセスのどこかで、行がpsql端末の次の行を超えているので、これらの\ 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( "CSVヘッダーとSTDOUT TO mytableはCOPY")
:私は次のことを試してみました
ProgrammingError: can't execute COPY TO: use the copy_to() method instead
をまた、私はわからないんだけどこれが最善の方法であれば。しかし、私が何かしようとしたもの:
私はこのエラーを取得する: トレースバック(最新の呼び出しの最後を): MY_TABLE = pd.read_sql_table( 'team_totalsで ファイル ""、1行目を、 」、接続) ファイル "C:\ Users \ユーザーpeshalnayak \ Anaconda3 \ libには\サイト - パッケージ\パンダ\ IO \ sql.py"、行351、read_sql_table レイズNotImplementedError( NotImplementedError "read_sql_tableのみでサポートさ" で:read_sql_tableは、SQLAlchemy connectableでのみサポートされています。 –
foobar
ok私は 'my_table'または' another_attempt'のいずれかの行がうまく働くように、クエリを取るread_sql関数を使用するように答えを更新します。 –
OK。 1つは標準の 'pd_read_sql'を使用し、2つ目は' post.res 'に接続するために特別に提案した 'pd.io.sql'を使います。好奇心が強い、または両方がそうである場合。 –