我最近把我的网站搬到了新的服务器上。我有一些基本的python脚本,在MySQL数据库中有访问数据。在旧服务器上我们没有问题。在新服务器上:
现在正在挖掘几天,以确定数据库,数据库服务器,服务器本身是否有一些设置阻止python(但不是MySQLWorkbench)正常工作。
查询和代码以防有趣:
query = "SELECT * FROM wordpress.table;"
conn = MySQLConnection(**mysqlconfig)
cursor = conn.cursor()
cursor.execute(query)
rows = cursor.fetchall()
我没有关于服务器的详细信息,但它有足够的力量让MySQLWorkbench正常工作,只是python似乎无法使其工作
**** 编辑 ****
要查看这个问题是否是由于为python返回太多数据的查询引起的,我想使用OFFSET和LIMIT来循环遍历更大的查询,每个查询包含10行。
total_rows = 100000
interval = 10
data = []
for n in range(0, total_rows / interval):
q = "SELECT * FROM wordpress.table LIMIT %s OFFSET %s" % (interval, n * interval)
cursor.execute(q)
returned = cursor.fetchall()
rows = [[i for i in j] for j in list(returned)]
for row in rows:
data.append(row)
print n, len(data)
预计:这将通过较小的部分快速完成更大的查询 发生的事情:它比之前被卡住的3000行更进一步,但在经过一些迭代后最终撞到墙壁。同样不一致的是,运行脚本10次会导致n每次都达到不同的点。
答案 0 :(得分:2)
使用服务器端游标可能会获得更好的性能:
import MySQLdb.cursors
con = MySQLdb.connect(host=host,
user=user,
passwd=pwd,
charset=charset,
port=port,
cursorclass=MySQLdb.cursors.SSDictCursor);
cur = con.cursor()
cur.execute("SELECT * FROM wordpress.table")
for row in cur:
print row
您也可以查看对这些问题的回复: