python-mysqldb:如何从数据库中有效地获取数百万/数十亿条记录?

day*_*mer 2 python mysql mysql-python

  • 我有一个表,我必须从中获取大约700万条记录,这也将达到数十亿条记录(因为每天都会添加数据)
  • 我使用mysql-python连接到远程MySQL数据库

  • 我查询如下

cursor = conn.cursor()
cursor.execute(query)
返回游标

并尝试将它们打印为

sql = 'select * from reading table;' # has 7 million records
cursor = MySQLDB.execute(sql)
for row in cursor:
        print row
Run Code Online (Sandbox Code Playgroud)
  • 打印它需要永远

在服务器上,我看到进程正在运行

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                                                                                     
 3769 mysql     20   0 1120m 276m 5856 S  125  1.7   2218:09 mysqld      
Run Code Online (Sandbox Code Playgroud)

问题 使用python使用{m,b}错误记录查询表的有效方法是什么?

谢谢

new*_*ver 5

我建议两个选择:

  1. 使用SELECT OUTFILE或甚至使用mysql控制台将所需数据导入文件,并使用该文件.

  2. 您应该理解,默认情况下,mysql将整个结果集发送到客户端,并且客户端模仿就像逐行读取数据一样(尽管整个结果已经在内存中,或者如果内存不足则失败).或者,结果集可以在服务器端形成.为此,您需要将cursor=MySQLdb.cursors.SSCursor参数添加到MySQLdb.connect(有关详细信息,请参阅http://mysql-python.sourceforge.net/MySQLdb.html).