2016-04-05 23 views
1

私はわずか1GBのメモリと1 TBのハードディスクスペースしか持っていないと言います。Psycopg2 cursor.executeジェネレータを返す

これは私のコードで、私はpostgresデータベースを使用しています。この場合の

import psycopg2 

try: 
    db = psycopg2.connect("database parameters") 
    conn = db.cursor() 
    conn.execute(query) 

    #At this point, i am running 
    for row in conn: 

、私はconnは私がオンライン決定的な答えを見つけるために、私はクラッシュするようにシステムを買う余裕はないと私は私の環境でそれを試すことができないように見えることができないとして発電機であると仮定しても安全であると思います。

私はあなたがあなたの例ではやっている匿名のカーソルを使用する場合、私は、その後、のpython 2.7およびpsycopg2ライブラリ

+0

1つの結果しか返さず、[this answer]に従って '(isinstance(gen、types.GeneratorType)'を試してみてください(http://stackoverflow.com/questions/6416538/how-to-checkもし、conn.execute()がジェネレータを返すとすぐにあなたに伝えるべきです。 –

答えて

3

を使用しています100ギガバイト

を超えるデータを返すために、このクエリを期待していますクエリ結果全体がメモリに読み込まれます。

named cursorを使用すると、データをループしながらサーバーから読み取られます。

関連する問題