# log 数据库连接
class LogMysql(object):
conn = None
cursor = None def __init__(self):
self.conn = pymysql.connect(host='', user='',
password='',
database='log', charset='utf8')
self.cursor = self.conn.cursor() # 为了方便使用一般会选择将查询结果加上字段名称以字典组的方式返回查询结果
def dict_fetchall(self):
"Return all rows from a cursor as a dict"
# 获取查询字段
columns = [col[0] for col in self.cursor.description]
print(columns)
return [dict(zip(columns, row)) for row in self.cursor.fetchall()] # 获取表列表
def get_table_list(self):
# 判断表是否存在
self.cursor.execute("SHOW TABLES")
res = self.cursor.fetchall()
table_list = []
for i in res:
table_list.append(i[0])
# print("table_list", table_list)
return table_list # redis主库
class Redis(object):
conn = None def __init__(self):
poll = redis.ConnectionPool(host='192.168.5.219', port=6379, db=14, password='root1234@A')
# 本地测试
# poll = redis.ConnectionPool(host='192.168.10.10', port=7000, db=14)
self.conn = redis.Redis(connection_pool=poll)

class LogMysql(object):
    conn = None
    cursor = None
    table = None
    database = None
    def __init__(self, database, table):
        self.table = table
        self.database = database
        self.conn = pymysql.connect(host='rm-2zezqp8sll2swzwby.mysql.rds.aliyuncs.com', user='datacenter',
                                    password='kbs11zx@',
                                    database=self.database, charset='utf8')
        # 本地测试
        # self.conn = pymysql.connect(host='192.168.10.5', user='root',
        #                             password='root',
        #                             database='unionlog', charset='utf8')
        self.cursor = self.conn.cursor()
    # 为了方便使用一般会选择将查询结果加上字段名称以字典组的方式返回查询结果
    def dict_fetchall(self):
        "Return all rows from a cursor as a dict"
        # 获取查询字段
        columns = [col[0] for col in self.cursor.description]
        # print(columns)
        return [dict(zip(columns, row)) for row in self.cursor.fetchall()]
    # 插入数据库
    def insert_db(self, data):
        # ##################### 表名 #####################
        table = self.table
        keys = ', '.join(data.keys())
        values = ', '.join(['%s'] * len(data))
        sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
        try:
            self.cursor.execute(sql, tuple(data.values()))
            print('insert Successful')
            self.conn.commit()
            self.cursor.close()
            self.conn.close()
        except Exception as e:
            print('insert Failed')
            self.conn.rollback()
            self.cursor.close()
            self.conn.close()
    # 更新数据库
    def updata_db(self, data):
        # ##################### 表名 #####################
        table = self.table
        keys = ', '.join(data.keys())
        values = ', '.join(['%s'] * len(data))
        # 实际用的是插入语句,不过加了ON DUPLICATE KEY UPDATE(主键存在,则执行更新操作)
        sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys,
                                                                                             values=values)
        update = ','.join([" {key} = %s".format(key=key) for key in data])
        sql += update
        try:
            self.cursor.execute(sql, tuple(data.values()) * 2)
            print('update Successful')
            self.conn.commit()
            self.cursor.close()
            self.conn.close()
        except Exception as e:
            print('update Failed')
            self.cursor.close()
            self.conn.close()
    
    def update_db_sql(self, sql):
        # sql="""update contact set mobile=100088 where name='kate'"""
        try:
            self.cursor.execute(sql)  #执行sql
            self.conn.commit() #提交到数据库
            # db_cursor.execute("select * from contact")
            # ars=db_cursor.fetchall()
            # for rs in ars:
            #     print(rs)
            print('更新成功')
        except Exception as e:
            print("error to update:",e)
            self.conn.rollback()  #发生错误则回滚
            self.cursor.close()
            self.conn.close()

mysql-redis连接的更多相关文章

  1. python连接MySQL/redis/mongoDB数据库的简单整理

    python连接mysql 用python操作mysql,你必须知道pymysql 代码示意: import pymysql conn = pymysql.connect(host='127.0.0. ...

  2. CentOS搭建Apache+php+MySQL+Redis环境

    要搭建一个本地linux服务器环境,按照网络教程依葫芦画瓢,噼里啪啦搭好后,发现redis服务怎么也弄不好,不喜欢那种明知有问题却无从下手又无能为力的感觉,碰了无数次壁以后,我决定卸载,重头来过,并尽 ...

  3. 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】

    https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...

  4. SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置

    2016年03月03日 10:37:47 标签: mysql / redis / mybatis / spring mvc / spring 33805 项目环境: 在SpringMVC + MyBa ...

  5. mysql+redis+memcached

    mysql+redis+memcached 数据库 数据库设计 a. 单表 b. FK(单表:一张表存储时,如果有重复出现的字段为了防止硬盘的浪费,所以做一个FK:去掉FK变成单表(这样子访问速度快了 ...

  6. 性能测试二十六:环境部署之Mysql+Redis+Tomcat环境整合

    系统中使用了缓存+数据库,通用读取数据规则1.先从缓存读数据,如果有,直接返回数据:2.如果没有,去数据库中读,然后再插入到缓存中,再返回数据 Mysql+Redis+Tomcat环境整合 1.修改P ...

  7. python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解

    1.python mysql  redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...

  8. python 基础 10.0 nosql 简介--redis 连接池及管道

    一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且 ...

  9. mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)

    题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...

  10. 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

随机推荐

  1. logstash收集springboot日志

    logstash收集springboot日志 maven依赖 <dependency> <groupId>net.logstash.logback</groupId> ...

  2. 用Qt(C++)实现如苹果般的亮屏效果

    用Qt(C++)实现如苹果般的亮屏效果 苹果的亮屏效果可能有很多人没注意到,和其他大部分手机或电脑不同的是,苹果的亮屏特效不是简单的亮度变化,而是一个渐亮的过程.详细来说就是,图片中较亮的部分先显示出 ...

  3. LinqToObject和LinqToSql的区别

    抓住五一假期尾巴和小伙伴们一起分享这两者的区别.大家在日常编码的过程当中肯定也注意过或者使用过.但是二者其实存在本质的区别 1.什么是LinqToObject呢? LINQ to Objects指直接 ...

  4. hdu4284 dfs+floyd

    题意:       给你n个城市,m条边,要有h个必须旅游和打工的城市,问你能不能从1把所有必须的h个城市全部旅游并且打工完... 思路:       先一遍floyd跑出全局最短路,然后暴力枚举出打 ...

  5. Linux下性能监控、守护进程与计划任务管理

    目录 一:监视系统进程(ps .top) 二:查看网络连接信息 (netstat) 三:文件进程.端口关联(lsof) 四:计划任务管理(at .crontab) at crontab 一:监视系统进 ...

  6. 设计模式-UML图简单介绍

    直接上法宝: 1.类(Class)     类图分三层:     第一层显示类的名称,如果是抽象类,则就用斜体显示.     第二层是类的特性,通常就是字段和属性.     第三层是类的操作,通常是方 ...

  7. Dockerfile多阶段构建

    多阶段构建 之前的做法: 在Docker17.05版本之前,构建Docker镜像,通常采用两种方式: 1.全部放入一个Dockerfile 一种方式是将所有的构建过程全都包含在一个Dockerfile ...

  8. Day002 Java开发环境搭建

    Java开发环境搭建 JDK.JRE.JVM JDK: Java Development Kit(包涵JRE) JRE: Java Runtime Environment(包涵JVM) JVM: Ja ...

  9. Jedis基础详解

    Jedis 使用Java来操作Redis 什么是Jedis 是Redis官方推荐的Java操作Redis中间件, 如果你要使用Java操作Redis, 那么就该对jedis熟悉 测试 导入对应的依赖 ...

  10. Windows进程间通讯(IPC)----消息队列

    消息队列 windows系统是通过消息驱动的,每移动一下鼠标,点击一下屏幕都会产生一个消息.这些消息会先被放在windows的一个系统消息队列(先进先出)中,windows系统会为每一个GUI线程创建 ...