本文章主要来说python对mysql数据库的基本操作,当然,前提是已经搭建了python环境和搭建了Mysql

数据库的环境,python操作mysql数据库提供了MySQLdb库,下载的地址为:

https://pypi.python.org/pypi/MySQL-python/1.2.4

见官方下载的截图:

下载文件后,直接进行安装,安装的方式这里不在介绍,如有不明白,可以bing下,安装完成后,在python的命令行环境下

看是否可以导入MySQLdb,如果可以导入并且无任何的错误提示,表示已经安装成功了,见截图:

已经很成功的安装了python操作mysql的数据库,在这里,我们详细的介绍对python对mysql的增加,删除,修改

和查询的基本操作,这里使用的数据库名称是“day2017”,我们对数据库的操作,首先是创建数据库,然后是在数据库中

创建表,在这里,表的名称为:userInfo,见创建好的表字段信息:

OK,创建好数据库以及创建好了数据库中的表以后,下来开始操作数据库,操作数据库的第一步当然是连接数据库,然后是

创建游标,接下来是对数据库的各种操作,这里我们先来操作Insert数据的操作,见实现的代码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb def insert_One():
'''插入一条数据'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor()
sql = 'INSERT INTO userInfo VALUES (%s,%s,%s,%s)'
params = (1, 'admin', 'admin', 'wuya@outlook.com',)
cur.execute(sql, params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
insert_One()

查看数据库,可以看到,数据已经插入到数据库中,见查询的结果:

在上面的案例中,只是插入了单条数据,实际上,某些时候,会插入多条数据,也就是批量插入,批量插入实现的代码为:

def insert_Many():
'''批量插入数据'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor()
sql = 'INSERT INTO userInfo VALUES (%s,%s,%s,%s)'
params = [
(2,'wuya','admin','wuya@outlook.com'),
(3,'weke','admin','weke@outlook.com')
]
cur.executemany(sql, params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
insert_Many()

接下来,我们来查看数据库的查询,数据查询分为二种,一种是查询的结果是一条语句,使用的是fetchone()方法,另外一种是查询的数据

结果是多条,使用的方法是fetchmany(),我们分别来看这二个方法的使用,我们先来看单条数据的查询,见实现的代码:

import  MySQLdb

def select_one():
'''单条数据的查询'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'select * from userInfo where id=%s'
params = (1,)
data=cur.execute(sql, params)
print cur.fetchone()
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
select_one()

多条数据的查询,见实现的代码:

import MySQLdb

def select_Many():
'''多条数据的查询'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'select * from userInfo'
ret=cur.execute(sql)
data=cur.fetchall()
for item in data:
print item
finally:
cur.close()
conn.close() if __name__=='__main__':
select_Many()

下面我们来看更新语句的测试,见实现的代码:

import  MySQLdb

def update_Test():
'''更新语句测试'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'update userInfo set username=%s where id=%s'
params=('system',1,)
ret=cur.execute(sql,params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
update_Test()

最后一步,也就是删除数据了,直接看如下的实现代码:

import  MySQLdb

def delete_Test():
'''删除语句测试'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'delete from userInfo where id=%s'
params=(3,)
ret=cur.execute(sql,params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
delete_Test()

事实上,对于如上操作数据库的方式,有很多的代码是可以重够的,比如连接数据库的方式,另外,我们可以把操作数据库的

方式写在一个类里面,在业务调用的时候直接调用我们的数据库方法进行操作,见下面操作mysql数据库的方法,见源码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb class MySQLHelper(object):
def __init__(self):
pass def get_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchone()
cur.close()
conn.close()
return data def get_many(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchall()
cur.close()
conn.close()
return data def insert_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor()
cur.execute(sql, params)
conn.commit()
cur.close()
return u'插入数据库成功' def insert_many(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor()
cur.executemany(sql, params)
conn.commit()
cur.close()
return u'批量插入数据库成功' def update_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'更新数据库成功' def delete_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'删除数据库成功'

把连接数据库部分进行重构,放到一个config.py的文件中,这样我们连接数据库的方法就只需要在config.py文件维护了,而不

需要在如上代码中每个都得看的修改,这实在是很糟糕,见重构后的config.py文件源码:

#!/usr/bin/env python
#coding:utf-8 conn_dict=dict(host='127.0.0.1', user='root', passwd='server', db='day2017')

见重构后操作mysql的数据库方法,见源码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb
import config class MySQLHelper(object):
def __init__(self):
self.conn=config.conn_dict def get_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchone()
cur.close()
conn.close()
return data def get_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchall()
cur.close()
conn.close()
return data def insert_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.execute(sql, params)
conn.commit()
cur.close()
return u'插入数据库成功' def insert_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.executemany(sql, params)
conn.commit()
cur.close()
return u'批量插入数据库成功' def update_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'更新数据库成功' def delete_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'删除数据库成功'

写数据库的操作方法,是为了进行对业务的操作,要不仅仅写这些没什么实际的意义,如我们实现输入用户名和密码,在

在数据库中验证,如果用户名和密码都是admin,那么通过,如果有其中一个不是admin,就提示用户,请提示用户用户名

或者密码错误,下面来实现这样的一个过程,见实现的源码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb
import config class MySQLHelper(object):
def __init__(self):
self.conn=config.conn_dict def get_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchone()
cur.close()
conn.close()
return data def get_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchall()
cur.close()
conn.close()
return data def insert_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.execute(sql, params)
conn.commit()
cur.close()
return u'插入数据库成功' def insert_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.executemany(sql, params)
conn.commit()
cur.close()
return u'批量插入数据库成功' def update_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'更新数据库成功' def delete_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'删除数据库成功' class CheckUserInfo(object):
def __init__(self):
self.__helper=MySQLHelper() def checkValid(self,username,password):
sql='select * from userInfo where username=%s and password=%s'
params=(username,password)
return self.__helper.get_one(sql,params) def info():
username=raw_input(u'请输入你的用户名:\n')
password=raw_input(u'请输入你的密码:\n')
userInfo=CheckUserInfo()
result=userInfo.checkValid(username,password)
if not result:
print u'用户名或者密码错误,请联系管理员'
else:
print u'恭喜您,输入正确!' if __name__=='__main__':
info()
坚持就是一种赢姿态!
参考 https://www.cnblogs.com/weke/category/831885.html

Python接口测试之对MySQL的操作(六)的更多相关文章

  1. Python接口测试之对MySQL/unittest框架/Requests 的操作

    单元测试支持测试自动化. 共享的安装程序和关闭代码测试. 聚合成集合,测试和报告框架从测试的独立性.单元测试模块提供可以很容易地支持这些素质的一组测试的类.关于unittest 测试框架建议可以到官方 ...

  2. python接口测试之mock(二)

    上一篇对mock-server已经做了初步的介绍,今天这里继续接着之前的介绍进行,我们先看之前的mock-server部分,之前编写了一个登录的mock,具体json文件见如下的内容: 小王子1110 ...

  3. Python学习笔记15—mysql的操作

    安装 Python-MySQLdb pip install mysql-Python Python对mysql的操作 建立一个实验数据库demo mysql> create database d ...

  4. python 基础 9.3 mysql 数据操作

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/21 0:20 #@Auther :liuzhenchuan #@File   :mysql 数据操作 ...

  5. python接口测试之excel的操作

    1 用到的第三方库openpyxl,需要在命令窗口中下载安装pip install openpyxl,主要对xlsx格式的excel进行读取和编辑: xlrd库从excel中读取数据,支持xlsx x ...

  6. [Python] 学习笔记之MySQL数据库操作

    1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...

  7. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

  8. python笔记二(mysql数据库操作)

    python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...

  9. python接口自动化测试框架实现之操作mysq数据库

    python操作mysql数据库需要使用到mysqlclient库. 安装:pip install mysqlclient python连接mysql数据库分以下步骤: 1.与mysql建立连接: 2 ...

随机推荐

  1. Django 源码安装及使用

    首先我们使用的是最新版的CentOS系统:CentOS 7.4 在安装django之前,我们首先保证系统中已经安装好setuptools Django安装: 1.首先我们在Django官网下载最新版本 ...

  2. poj 2349 Arctic Network(最小生成树的第k大边证明)

    题目链接: http://poj.org/problem?id=2349 题目大意: 有n个警戒部队,现在要把这n个警戒部队编入一个通信网络, 有两种方式链接警戒部队:1,用卫星信道可以链接无穷远的部 ...

  3. _bzoj1500 [NOI2005]维修数列【真·Splay】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1500 注意MAX-SUM的时候,不可以是空串. #include <cstdio> ...

  4. shell脚本从入门到精通

    阿里云大学 shell脚本从入门到精通 第1 章 : shell脚本编程-变量-算术表达式-判断语句-if分支语句 第2 章 : case-for-While-双括号-循环嵌套-break-conti ...

  5. Access OLE对象和附件的区别

    OLE 对象 来自 Office 和基于 Windows 的程序的图像.文档.图形和其他对象 最多可存储 2GB 数据(此大小限制适用于所有 Access 数据库).请记住,添加 2GB 数据会导致数 ...

  6. C#中实现C++中的友元类

    最近做一个小程序,一个类A(负责显示处理)需要大量调用类B(负责数据处理)的函数,我最先想到的C++中的友元概念,因为类B中的这些函数并不希望public,它只是允许类A调用监测. 网上搜索了一下,没 ...

  7. 211 Add and Search Word - Data structure design 添加与搜索单词 - 数据结构设计

    设计一个支持以下两个操作的数据结构:void addWord(word)bool search(word)search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z . ...

  8. [转]Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)

    前言 结合之前所用的ormlite和hessian,再加上SAE已经支持JAVA,把服务端切换到JAVA,也就有了本文.使用hessian来做数据传输,ormlite来实现客户端与服务端的数据存储,极 ...

  9. .NET框架概述

    .NET战略目标: 任何时候(when),任何地方(where),使用任何工具(what)都能通过.NET的服务获得网络上的任何信息. .NET优势: 1.提供了一个面向对象的编程环境,完全支持面向对 ...

  10. IIS7.0中Process打开cmd程序出现问题

    本人在VS中用Process打开cmd程序,并传入参数,转换图片,运行成功! 但是放入IIS7.0中,Process打不开cmd程序,程序直接运行过去,无结果,无报错! 解决方案: 将IIS里面你程序 ...