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 ...
随机推荐
- Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
#登录 $username="{登录名}" #定义一个用户账号的变量,可以输入需要登录的订阅账号名称 $password=ConvertTo-SecureString -Strin ...
- Linux shell例子
#!/bin/bash read -p "input a dight:"echo $REPLY DATE=`date`echo "DATE is ${DATE}" ...
- Redis监控之redis-live.conf配置
{ "RedisServers": [ { "server": "192.168.1.201", "port": 637 ...
- 激励CEO们最好的办法就是鼓励他们不要停止思考
我们应该怎样在企业中释放出每一个人都可能内在的自我驱动力呢? 我创业十多年来,结识了很多创业家,他们中很多和我一样也试图通过学习实践找到有效管理的捷径,一个最简单的法则,最好还是比较容易的.事实上,最 ...
- Android(java)学习笔记145:Handler消息机制的原理和实现
联合学习 Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 1. 首先我们通过一个实例案例来引出一个异常: (1)布局文件activity_m ...
- python 判断路径是否存在
import os os.path.exists(文件绝对路径)
- rf统计条数
js模式 直接引用关键字模式
- WINDOWS-API:API函数大全
操作系统除了协调应用程序的执行.内存分配.系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮肋应用程序达到开启视窗.描绘图形.使用周边设备的目的,由 ...
- ios面试题(三)
4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy) ...
- IntelliJ IDEA 中自定义模板代码的缩写
方法一:新建 Live Template step1. 点击 File – Setting step2.选择 Live Template,点击右侧的+号,选择 Template Group step3 ...