Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lấy dữ liệu từ MySQL theo lô qua Python

Điểm đầu tiên:một con trăn db-api.cursor là một trình lặp, vì vậy trừ khi bạn thực sự cần để tải toàn bộ hàng loạt trong bộ nhớ cùng một lúc, bạn chỉ có thể bắt đầu bằng cách sử dụng tính năng này, tức là thay vì:

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

bạn chỉ có thể:

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

Sau đó, nếu việc triển khai trình kết nối db của bạn vẫn không sử dụng đúng tính năng này, thì đã đến lúc thêm LIMIT và OFFSET vào hỗn hợp:

# 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tối ưu hóa MySQL Views

  2. Kích hoạt hỗ trợ MySQL InnoDB Storage Engine trong cài đặt XAMPP

  3. nhận được số lượng từ cùng một cột trong một bảng mysql?

  4. Sắp xếp các mặt hàng có các thẻ phù hợp theo số lượng các thẻ phù hợp

  5. Phiên bản MySQL nào tương thích với phiên bản Airflow 1.10?