文档章节

python2.7 and python3 操作MySQL数据库类

leeyi
 leeyi
发布于 2017/05/25 17:58
字数 576
阅读 70
收藏 0
点赞 0
评论 0

python3 mysql.py

pip3 install pymysql

mysql.py

# -*- coding: utf8 -*-
import logging
import pymysql
import pymysql.cursors

from scrapy.utils.project import get_project_settings

settings = get_project_settings()
dbconf = settings['MYSQL_DB']

class _MySQL(object):
    def __init__(self, host, port, user, passwd, db, charset='utf8'):
        self.conn = pymysql.connect(
            host = host,
            port = port,
            user = user,
            passwd = passwd,
            db = db,
            charset = charset,
            cursorclass = pymysql.cursors.DictCursor
        )

    def get_cursor(self):
        return self.conn.cursor()

    def query(self, sql):
        cursor = self.get_cursor()
        try:
            cursor.execute(sql, None)
            result = cursor.fetchall()
        except Exception as e:
            logging.error("mysql query error: %s", e)
            return None
        finally:
            cursor.close()
        return result

    def execute(self, sql, param=None):
        cursor = self.get_cursor()
        try:
            cursor.execute(sql, param)
            self.conn.commit()
            affected_row = cursor.rowcount
        except Exception as e:
            logging.error("mysql execute error: %s", e)
            return 0
        finally:
            cursor.close()
        return affected_row

    def insert(self, sql, param=None):
        cursor = self.get_cursor()
        try:
            cursor.execute(sql, param)
            self.conn.commit()
            lastrowid = cursor.lastrowid
        except Exception as e:
            logging.error("mysql insert error: %s", e)
            return 0
        finally:
            cursor.close()
        return lastrowid

    def executemany(self, sql, params=None):
        cursor = self.get_cursor()
        try:
            cursor.executemany(sql, params)
            self.conn.commit()
            affected_rows = cursor.rowcount
        except Exception as e:
            logging.error("mysql executemany error: %s", e)
            return 0
        finally:
            cursor.close()
        return affected_rows

    def close(self):
        try:
            self.conn.close()
        except:
            pass

    def __del__(self):
        self.close()

mysql = _MySQL(
    host=dbconf['host'],
    user=dbconf['user'],
    passwd=dbconf['password'],
    db=dbconf['name'],
    port=dbconf['port'],
    charset=dbconf['charset'],
)

def create_table():
    table = """
            CREATE TABLE IF NOT EXISTS `watchdog`(
                `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `name` varchar(100),
                `price` int(11) NOT NULL DEFAULT 0
            ) ENGINE=InnoDB charset=utf8;
            """
    print(mysql.execute(table))

def insert_data():
    params = [('dog_%d' % i, i) for i in range(12)]
    sql = "INSERT INTO `watchdog`(`name`,`price`) VALUES(%s,%s);"
    print(mysql.executemany(sql, params))

def insert():
    params = [('dog_%d' % i, i) for i in range(12)]
    sql = "INSERT INTO `watchdog`(`name`,`price`) VALUES('%s','%s'), ('%s','%s');" % ('name_test', '100', 'name_tes2', '101')
    res = mysql.insert(sql)
    print(res)

def select_data():
    query = "select `id`,`name`,`price` from `watchdog`;";
    li = mysql.query(query)
    print(li)

if __name__ == '__main__':
    # create_table()
    # insert()
    # insert_data()
    # select_data()
    pass

python2.7 mysql.py

pip2 install MySQL-python

mysql.py

# -*- coding: utf8 -*-
import logging
import MySQLdb
import MySQLdb.cursors

from DBConf import db_host
from DBConf import db_port
from DBConf import db_user
from DBConf import db_passwd
from DBConf import db_name

class _MySQL(object):
    def __init__(self, host, port, user, passwd, db, charset='utf8'):
        self.conn = MySQLdb.connect(
            host = host,
            port = port,
            user = user,
            passwd = passwd,
            db = db,
            charset = charset,
            cursorclass = MySQLdb.cursors.DictCursor
        )

    def get_cursor(self):
        return self.conn.cursor()

    def query(self, sql):
        cursor = self.get_cursor()
        try:
            cursor.execute(sql, None)
            result = cursor.fetchall()
        except Exception, e:
            logging.error("mysql query error: %s", e)
            return None
        finally:
            cursor.close()
        return result

    def execute(self, sql, param=None):
        cursor = self.get_cursor()
        try:
            cursor.execute(sql, param)
            self.conn.commit()
            affected_row = cursor.rowcount
        except Exception, e:
            logging.error("mysql execute error: %s", e)
            return 0
        finally:
            cursor.close()
        return affected_row

    def executemany(self, sql, params=None):
        cursor = self.get_cursor()
        try:
            cursor.executemany(sql, params)
            self.conn.commit()
            affected_rows = cursor.rowcount
        except Exception, e:
            logging.error("mysql executemany error: %s", e)
            return 0
        finally:
            cursor.close()
        return affected_rows

    def close(self):
        try:
            self.conn.close()
        except:
            pass

    def __del__(self):
        self.close()

mysql = _MySQL(db_host, db_port, db_user, db_passwd, db_name)

def create_table():
    table = """
            CREATE TABLE IF NOT EXISTS `watchdog`(
                `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `name` varchar(100),
                `price` int(11) NOT NULL DEFAULT 0
            ) ENGINE=InnoDB charset=utf8;
            """
    print mysql.execute(table)

def insert_data():
    params = [('dog_%d' % i, i) for i in xrange(12)]
    sql = "INSERT INTO `watchdog`(`name`,`price`) VALUES(%s,%s);"
    print mysql.executemany(sql, params)

if __name__ == '__main__':
    # create_table()
    # insert_data()
    pass

© 著作权归作者所有

共有 人打赏支持
leeyi
粉丝 5
博文 44
码字总数 51915
作品 0
深圳
后端工程师
Python学习日记六(Python连接MySql)

一.准备工作(下载MySQL-python和python安装包 ) Python需要连接mysql,需要下载Python MySQLdb模块,这里提供几个链接地址: MySQL-python官网下载地址 :https://pypi.python.org/pypi/My...

HaleyLiu ⋅ 04/12 ⋅ 0

「自动化实战」手把手从python安装到setuptools、pip工具安装

以下为在Ubuntu中python的基础环境安装 一、python安装 1、基础开发库 sudo apt-get install gcc sudo apt-get install openssl libssl-dev 2、安装数据库和开发库 sudo apt-get install mys...

yard521 ⋅ 05/20 ⋅ 0

Python下访问MYSQL的方法总结

在Python下做过服务器开发的小伙伴对ORM技术一定都不陌生,ORM(Object-Relational Mapping),将关系数据库的表结构映射到对象上,隐藏了数据库操作背后的细节,简化了对数据操作的写法,使...

zwgdft ⋅ 2016/10/15 ⋅ 0

Pycharm开发工具里面python3连接MySQL问题

参考地址:http://www.runoob.com/python3/python3-mysql.html 以前的代码是python2.7开发的,Python2中则使用mysqldb,现在准备用python3,则用不了mysqldb组件;PyMySQL 是在 Python3.x 版...

mchdba ⋅ 04/18 ⋅ 0

django从sqlite切换到mysql时总是提示No module named 'MySQLdb'

python版本:python3.4 python2和python3有太多不兼容的地方,用着就是操蛋 本来是安装了mysqldb的, 结果配置了数据库后运行总是报错: 'Did you install mysqlclient or MySQL-python?' %...

zshzx ⋅ 2017/04/23 ⋅ 0

Centos7安装Python3并兼容Python2的方法

Centos7安装Python3的方法 由于centos7原本就安装了Python2,而且这个Python2不能被删除,因为有很多系统命令,比如yum都要用到。 [root@VM_105_217_centos Python-3.6.2]# pythonPython 2....

宿小帅 ⋅ 06/01 ⋅ 0

python3 django配置数据库(mysql)

python3 django配置数据库(mysql) python3 下的mysql驱动 django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1、使用p...

代金券优惠 ⋅ 04/24 ⋅ 0

centos7上安装或升级python3版本

centos7上安装python3.6.5 从官网上下载,目前最新版本是3.6.5 https://www.python.org/downloads/ 然后解压: tar zxvf Python-3.6.5.tgz 然后新建待安装目录: mkdir -p /opt/server/pytho...

bawenmao ⋅ 05/06 ⋅ 0

linux机器升级python版本至2.7.13

背景:刚申请的机器python版本是2.6的,需要手动升级到2.7.13版本; 步骤: 1 下载python2.7.13版本的源码包 wget http://python.org/ftp/python/2.7.13/Python-2.7.13.tgz --no-check-cert...

M玺 ⋅ 04/20 ⋅ 0

ubuntu下Python的安装和使用

4.1 Python的安装 ubuntu下可以很方便的使用apt-get来安装软件,这里我们安装 Python 2.7/3.2(因为Python2和Python3区别很大)。安装步骤如下(下面的命令安装了两种)。 4.1.1 安装Python发...

JungleKing ⋅ 05/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 50分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 53分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 今天 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 今天 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部