Python MySQL查询MySQL workbench工作正常的时间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python MySQL查询MySQL workbench工作正常的时间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1825字,纯文字阅读大概需要3分钟。
内容图文
我最近把我的网站搬到了新的服务器上.我有一些基本的python脚本,在MySQL数据库中有访问数据.在旧服务器上我们没有问题.在新服务器上:
> MySQLWorkbench可以毫无困难地连接并执行所有查询
>使用python的相同(SELECT)查询在5%的时间内工作,其他95%的时间超时或连接在查询期间丢失
>例如表有100000行,在MySQLWorkbench中选择整个工作正常. 3秒后返回.
>在python中相同的查询永远不会工作,当LIMIT 2999查询工作但只有LIMIT 3010导致它超时.
>在本地或远程运行脚本时观察到相同的效果
现在正在挖掘几天,以确定数据库,数据库服务器,服务器本身是否有一些设置阻止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每次都达到不同的点.
解决方法:
使用服务器端游标可能会获得更好的性能:
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
您也可以查看对这些问题的回复:
How to get a row-by-row MySQL ResultSet in python
How to efficiently use MySQLDB SScursor?
内容总结
以上是互联网集市为您收集整理的Python MySQL查询MySQL workbench工作正常的时间全部内容,希望文章能够帮你解决Python MySQL查询MySQL workbench工作正常的时间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。