問題タブ [py-postgresql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python3からPostgreSQLへの接続を開くことができません
Python3.2のインストールからPostgreSQLに接続できないという奇妙な問題が発生しています。私はFedora15を実行しており、yumを使用してFedoraリポジトリーからPython3とPostgerSQL9をインストールしました。なぜ私がこの問題を目にしているのか、そしてそれを修正する方法について誰かが何か考えを持っていますか?グーグル検索は何も出てこなかった。
ユーザー名、パスワード、データベースを変更しましたが、pg_hba.confファイルは正しいです。
pq://user:password@host/database
補足として、異なるユーザー、パスワード、データベースの組み合わせを使用して接続しようとした場合、およびローカルホストとリモートホストの両方にキーワードの代わりに接続文字列を使用した場合にも、同じエラーが発生します。
python - py-postgresql マルチスレッドの問題
重い負荷がかかると、ピラミッド Web アプリが py-postgresql 例外をスローすることがわかりpostgresql.exceptions.ProtocolError
ました。一部の検索で、py-postgresql はスレッドセーフではなく、1 つの接続を複数のスレッドで同時に使用できないことが明らかになりました。
ある種のプーリング メカニズムを作成しようとしましたが、それでも ProtocolErrors が発生します :(
私は何を間違っていますか?
まず、いくつかの接続オブジェクトを作成します。
プール内の各オブジェクトにはdb_lock = threading.Lock()
、データベースへの接続が含まれていますself.conn = postgresql.open( conn_string )
次に、接続のロックを取得して、いくつかの作業を行います。work
このコードは多くのスレッドで同時に実行できますが、ロックのために 1 つの接続で2 つのスレッドを同時に実行することはできないと思います。
私のコードに欠陥があるのでしょうか、それとも py-postgresql の「スレッドの安全性」の性質を誤解したのでしょうか? 私を助けてください!
python - 暗号化されたパスワードでpy-postgresqlを使用する
Pythonでは、次のコードを使用してPostgreSQLデータベースに接続できます。
しかし、上記の行では、プレーンテキストのパスワードを入力する必要がありpy-postgresql
、PostgreSQLデータベースに保存されているハッシュ値と比較するためにそれをハッシュします。自分でハッシュしたパスワードを使用したい場合MD5
、つまりpy-postgresqlにハッシュを実行させたくない場合。どうすればいいですか?のソースコードを変更しようとしましたpy-postgresql
が、ハッシュが発生する場所が見つかりませんでした。次に、py-postgresql
SSLモードを有効にできるの設定を見つけます。誰かがそれを設定する方法について私に簡単な例を教えてもらえますか?
敬具。
python - postgresqlの一意の日付を取得するメモリ効率の良い方法は?
私は約 3000 万のエントリを持つデータベースを持っていますが、これは非常に多く、より大きなデータベース エントリでの作業に問題があること以外は何も期待していません。
しかし、py-postgresql と.prepare()
ステートメントを使用して、「」ベースでエントリを取得できることを願っています。yield
したがって、データベースからの結果だけでメモリがいっぱいになるのを避けることができます。
これは私がこれまでに持っているものです:
if not row['time'] in uniqueue_days:
メモリ不足になる前に、result()
ループする前にすべての結果を取得する可能性があることを考えると、それほど奇妙ではありませんか? ライブラリpostgresql
を「ページング」するか、ラウンドごとに60kの結果をバッチダウンする方法、またはクエリを作り直してより多くの作業を行う方法はありますか?
前もって感謝します!
編集:データベースの日付はUnixタイムスタンプであることに言及する必要があります。リスト%Y-%m-%d
に追加する前に、それらをフォーマットに変換するつもりuniqueue_days
です。