sql >> データベース >  >> RDS >> Mysql

Pythonを介してMySQLからバッチでデータを取得する

    最初のポイント:Python db-api.cursor はイテレータなので、本当に必要でない限り バッチ全体を一度にメモリにロードするには、次の代わりに、この機能の使用を開始できます。

    cursor.execute("SELECT * FROM mytable")
    rows = cursor.fetchall()
    for row in rows:
       do_something_with(row)
    

    あなたはただ:

    cursor.execute("SELECT * FROM mytable")
    for row in cursor:
       do_something_with(row)
    

    それでもdbコネクタの実装でこの機能が適切に使用されない場合は、LIMITとOFFSETをミックスに追加する必要があります。

    # py2 / py3 compat
    try:
        # xrange is defined in py2 only
        xrange
    except NameError:
        # py3 range is actually p2 xrange
        xrange = range
    
    cursor.execute("SELECT count(*) FROM mytable")
    count = cursor.fetchone()[0]
    batch_size = 42 # whatever
    
    for offset in xrange(0, count, batch_size):
        cursor.execute(
            "SELECT * FROM mytable LIMIT %s OFFSET %s", 
            (batch_size, offset))
       for row in cursor:
           do_something_with(row)
    


    1. MySQLデータベースをバックアップおよび復元する方法は?

    2. MySQL INTO OUTFILEは既存のファイルを上書きしますか?

    3. 「S-Q-L」または「続編」と発音されますか?

    4. AOL/Jセットアップテストスイート