import pymysql
import config '''
1.0 简单封装
1.1 添加了insert_id属性,返回insert时返回的主键
1.2 添加了column属性,返回查询的column
1.3 添加一个insert
1.4 添加了一个insertList支持批量添加
''' class Db:
'''
数据库操作类
Attributes:
transactionFlag:是否开启事务
insert_id:insert时返回的主键
''' def __init__(self):
'''
insert_id:insert时返回的主键
'''
self.insert_id = 0
self.column = None def __init__(self, transactionFlag=False):
'''
transactionFlag:是否开启事务
insert_id:insert时返回的主键
'''
self.insert_id = 0
self.column = None
self.transFlag = transactionFlag
self.conn = pymysql.connect(host=config.host, port=config.port, user=config.user,
passwd=config.passwd, db=config.db, charset='utf8') def close():
'''
关闭连接
'''
self.conn.close() def execSql(self, sql, param=None):
'''
执行增删改语句,返回影响的行数
sql:要执行的sql
param:sql是的参数,默认值为None
'''
cursor = self.conn.cursor()
if param == None:
a = cursor.execute(sql)
else:
a = cursor.execute(sql, param)
self.insert_id = cursor.lastrowid
self.column = cursor.description
if self.transFlag == False:
self.commit()
return a def query(self, sql, param=None):
'''
执行查询语句
sql:要执行的sql
param:sql是的参数,默认值为None
'''
cursor = self.conn.cursor(pymysql.cursors.DictCursor)
if param == None:
cursor.execute(sql)
else:
cursor.execute(sql, param)
ret = cursor.fetchall()
self.column = cursor.description
cursor.close()
return ret def queryOne(self, sql, param=None):
'''
执行查询语句
sql:要执行的sql
param:sql是的参数,默认值为None
'''
cursor = self.conn.cursor(pymysql.cursors.DictCursor)
if param == None:
cursor.execute(sql)
else:
cursor.execute(sql, param)
ret = cursor.fetchone()
cursor.close()
return ret def insert(self, table, keyvalue):
'''
以键值对的方式添加数据,简化insert
'''
keylist = []
valuelist = []
for key, value in keyvalue.items():
keylist.append(key)
valuelist.append("'%s'" % value)
sql = "insert into %s(%s) values(%s)" % (
table, ','.join(keylist), ",".join(valuelist))
return self.execSql(sql) def insertList(self, table, keyvalueList):
'''
以键值对的方式添加数据,简化insert
'''
keylist = []
first = keyvalueList[0]
for key, value in first.items():
keylist.append(key)
sql = "insert into %s(%s) values" % (
table, ','.join(keylist))
valuelist = []
for kv in keyvalueList:
vlist = []
for k in keylist:
vlist.append("'%s'" % kv[k])
valuelist.append("(" + ','.join(vlist) + ")")
sql = sql + ",".join(valuelist)
return self.execSql(sql) def commit(self):
self.conn.commit() def rollback(self):
self.conn.rollback()

python工具之myql数据库操作的更多相关文章

  1. Python数据存储 — MySQL数据库操作

    本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...

  2. Java常用工具类之数据库操作辅助类DBUtil.java

    package com.qushida.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.be ...

  3. python中的MySQL数据库操作 连接 插入 查询 更新 操作

    MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维 ...

  4. R和python连接SQL sever 数据库操作

    在R的使用中,为了方便提取数据, 我们经常要进行数据库进行操作,接下来我们尝试使用R进行连接数据. 这里我们使用R中的RODBC进行操作, 首先,我们需要先配置ODBC资源管理器 通过任务管理器或者w ...

  5. python 使用sqlalchemy进行数据库操作

    sqlalchemy是python下一个著名的数据库orm库,可以方便地进行数据表创建.数据增删改查等操作 最详细的教程,见官方:https://docs.sqlalchemy.org 这里列举一些常 ...

  6. python sqlalchemy 进行 mysql 数据库操作

    1. 进行mysql数据库的创建,如果已经存在,就相当于进行数据库的连接操作 from sqlalchemy import create_engine from sqlalchemy.ext.decl ...

  7. Python实战之MySQL数据库操作

    1. 要想使Python可以操作MySQL数据库,首先需要安装MySQL-python包,在CentOS上可以使用一下命令来安装 $ sudo yum install MySQL-python 2. ...

  8. python 包之 redis 数据库操作教程

    一.安装 redis 是一个 Key-Value 数据库 Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型 pip inst ...

  9. python - 接口自动化测试 - MysqlUtil - 数据库操作封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: mysql_util.py @ide: PyCharm C ...

随机推荐

  1. HDU 6122 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛 - 初赛(A))

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. 关于JAVA中的前期绑定 后期绑定(动态绑定)

    前期绑定,在程序执行前根据编译时类型绑定,调用开销较小,如C语言只有前期绑定这种方法调用. 后期绑定,是指在运行时根据对象的类型进行绑定,又叫动态绑定或运行时绑定.实现后期绑定,需要某种机制支持,以便 ...

  3. POJ1077 Eight —— 经典的搜索问题

    题目链接:http://poj.org/problem?id=1077 Eight Time Limit: 1000MS   Memory Limit: 65536K Total Submission ...

  4. javascript XMLHttpRequest 对象的open() 方法参数说明

    下文是从w3c上摘录下来的,其中参数 method 说明的很简短,不是很理解,所以又找了些资料作为补充.文中带括号部分. XMLHttpRequest.open() 初始化 HTTP 请求参数 语法o ...

  5. codeforces 460A Vasya and Socks 解题报告

    题目链接:http://codeforces.com/problemset/problem/460/A 题目意思:有一个人有 n 对袜子,每天早上会穿一对,然后当天的晚上就会扔掉,不过他会在 m 的倍 ...

  6. 关于encodeURIComponent的用法

    定义和用法 encodeURIComponent() 函数可把字符串作为 URI 组件进行编码. 语法 encodeURIComponent(URIstring) 参数  描述  URIstring  ...

  7. py-day8-socket网络编程

    本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...

  8. oracle 分库分表(sharding)

    以下文章转载博客:http://blog.csdn.net/bluishglc 讲的很深入透彻,转来分享下: 数据库Sharding的基本思想和切分策 http://blog.csdn.net/blu ...

  9. JAVA基础--异常10

    一.Object类简介 1.Object类简介 Object,是Java一切对象的最高父类:如果一个类没有显示继承一个类,他的父类就是Object: 它描述的是Java世界里所有对象最最共性的信息,它 ...

  10. (水题)Codeforces - 650A - Watchmen

    http://codeforces.com/contest/650/problem/A 一开始想了很久都没有考虑到重复点的影响,解欧拉距离和曼哈顿距离相等可以得到 $x_i=x_j$ 或 $y_i=y ...