python從數據庫獲取全量數據的方法
學習了:https://blog.csdn.net/lom9357bye/article/details/79503658
原文膜拜:
import psycopg2.pool from datetime import datetime # 批量查詢大小 batch_size = 1000 def cursor_query(): # 使用數據庫連接池,使用普通的連接方法運行貌似也會內存飆升,因此改為了連接池 simple_conn_pool = psycopg2.pool.SimpleConnectionPool(minconn=1, maxconn=5, database="dbname", user="username", password="123456", host="172.0.0.1", port="5432") # 從數據庫連接池獲取連接 conn = simple_conn_pool.getconn() # 自動提交事務設為false conn.autocommit = False # 創建游標,這里傳入name參數,會返回一個服務端游標否則返回的是客戶端游標 cursor = conn.cursor('cursorname') # 首先查詢全量數據 cursor.execute('select * from tablename') count = 0 # 開始時間 start_time = datetime.now() while True: count = count + 1 # 每次獲取時會從上次游標的位置開始移動size個位置,返回size條數據 data = cursor.fetchmany(batch_size) # 數據為空的時候中斷循環 if not data: break print('獲取%s到%s數據成功' % ((count - 1) * batch_size, count * batch_size)) print('fetchmany獲取全量數據所用時間:', (datetime.now() - start_time).seconds) cursor_query()
