Python 频繁读取Mysql相关问题
1、需要频繁select大量数据,时间长、消耗内存大,如何解决mysql性能问题?
如果对返回的结果数量没有要求,可以控制返回的数量:
cursor.fetchmany(size=1000)
这样是只返回1000条数据,如果返回的结果小于size,则返回所有数据;
如果你只需要一条,则更简单:fetchone()
2、每次插入的数据过大,MySQL server has gone away 如何解决?
存储为blob类型;
修改my.conf里:max_allowed_packet = 500m
3、要把python的list类型存入mysql,然后下次还需要以list格式读取,如何操作?
因为list类型里包含半角的逗号,或插入的数据里包含特殊符号,则不能正常插入mysql。
Google里有很多方法,我采取的是base64。将要插入的数据base64 encode可以正常存入Mysql。
base64str = base64.b64encode(str(mysqlstr))
mysqlstr = base64.b64decode(b64str)
注意:当你读取的时候,需要base64decode,这时得到的是str,则不能正常使用list序列取值。怎么办?
eval(string)
如上操作,eval可以很好的解决这个问题,把str变成tuple,就可以直接用了。
4、频繁操作Mysql更删查数据时,最好采用多线程操作数据库,避免因为my.conf配置问题带来的麻烦。
下面是一个Mysql多线程操作类:
class MYSQL:
def __init__(self,sql):
self.sql = sql
self.conn = MySQLdb.connect(charset='utf8',user='yourname',passwd='passwd',db='your dbname')
self.cursor = self.conn.cursor() def insert(self):
self.cursor.execute(self.sql)
self.conn.commit()
self.cursor.close()
self.conn.close()
return True def select(self):
self.cursor.execute(self.sql)
alldata = self.cursor.fetchall()
self.cursor.close()
self.conn.close()
return alldata def update(self):
self.cursor.execute(self.sql)
self.conn.commit()
self.cursor.close()
self.conn.close()
return True
Python 频繁读取Mysql相关问题的更多相关文章
- python 使用流式游标 读取mysql怎么不会内存溢出
使用过java读取mysql大数据量的人应该都知道,如果查询时不开游标不设置一次性区大小的话,会一次性的把所有记录都拉取过来再进行后续操作,数据量一大就很容易出现OOM 如果用python去读取mys ...
- python json及mysql——读取json文件存sql、数据库日期类型转换、终端操纵mysql及python codecs读取大文件问题
preface: 近期帮师兄处理json文件,须要读到数据库里面,以备其兴许从数据库读取数据.数据是关于yelp站点里面的: https://github.com/Yelp/dataset-examp ...
- Python day7之mysql
写在前面: 由于毕业论文撰写和答辩耽搁了几个月,但是在这几个月没有放弃学习Python,就是没有时间写博客.进行我们主要对数据库mysql的操作指令集的学习. 一.mysql术语 Mysql是最流行的 ...
- MySQL相关参数总结
保留个原文链接,避免被爬虫爬了过去,以便后续更正补充:https://www.cnblogs.com/wy123/p/11273023.html MySQL参数繁多,是一个需要根据具体业务.软硬件环境 ...
- day06 python代码操作MySQL
day06 python代码操作MySQL 今日内容 python代码操作MySQL 基于python与MySQL实现用户注册登录 python操作MySQL python 胶水语言.调包侠(贬义词& ...
- python 批量删除mysql前缀相同的表
1,一般游戏log数据库会存储大量的玩家行为日志,一种行为一张表,每天生成一张新表,一天会有30+张不同行为的表,通常会保留玩家日志1年左右,对于超过1年的日志需要删除 2,log数据库一年会保存1W ...
- 读取mysql数据库的数据,转为json格式
# coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:读取mysql数据库的数据,转为json格式 ''' import ...
- Python+Pandas 读取Oracle数据库
Python+Pandas 读取Oracle数据库 import pandas as pd from sqlalchemy import create_engine import cx_Oracle ...
- Django读取Mysql数据并显示在前端
一.首先按添加网页的步骤添加网页,我的网页名为table.html, app名为web table.html放到相应目录下, froms文件提前写好 修改views.py ? 1 2 3 4 5 6 ...
随机推荐
- springclould feign客户端添加全局参数
用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: ...
- Struct和Class的区别 转
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...
- 【笨办法学Python】习题11:打印出改变了的输入
print "How old are you?", age = raw_input() print "How tall are you?", height = ...
- 超简单!一步创建自己的wifi热点~
还在用某某卫士.某某管家创建wifi热点,甚至被忽悠专门买一个随身wifi吗?现在答案明确了:你完全用不着它们了.因为有更简单的方法. 只需要两个bat文件.一个用来启动wifi热点,另一个用来关闭w ...
- Windows上SVN服务器搭建【转】
Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.本文介绍Windows上 VisualSVN server 服务端和 TortoiseSVN客户端搭配使用: 现在S ...
- 【Web应用】JAVA网络上传大文件报500错误
问题描述 当通过 JAVA 网站上传大文件,会报 500 错误. 问题分析 因为 Azure 的 Java 网站都是基于 IIS 转发的,所以我们需要关注 IIS 的文件上传限制以及 requestT ...
- spring 中bean学习笔记
spring 中bean 一.bean的定义和应用 1. bean 形象上类似于getXX()和setXX()的一种. 2. 由于java是面向对象的,类的方法和属性在使用中需要实例化. 3. 规律: ...
- (四)VMware Harbor 配置文件
VMware Harbor 配置文件 :harbor.yml # Configuration file of Harbor # The IP address or hostname to access ...
- mac上使用命令行显示隐藏文件
终端中输入命令 打开<终端> - 粘贴下面的两行命令执行 defaults write com.apple.finder AppleShowAllFiles TRUEkillall Fin ...
- 前端性能优化:细说JavaScript的加载与执行
本文主要是从性能优化的角度来探讨JavaScript在加载与执行过程中的优化思路与实践方法,既是细说,文中在涉及原理性的地方,不免会多说几句,还望各位读者保持耐心,仔细理解,请相信,您的耐心付出一定会 ...