专栏首页Python自动化测试python对mysql数据库操作之代码优化(二)

python对mysql数据库操作之代码优化(二)

之前编写了对mysql数据库的增,删,改,查的方法,再见这部分的代码:

import MySQLdb

class MySQLHelper(object):

def __init__(self):

pass

@property

def selectMySQL(self):

try:

conn=MySQLdb.connect(host='localhost',user='root',

passwd='server',db='db',,charset='utf8')

cur=conn.cursor()

except Exception,e:

print u'操作mysql数据库失败'

else:

cur.execute('select * from user;')

data=cur.fetchall()

for d in data:

print d

finally:

cur.close()

conn.close()

@property

def insertMySQL(self):

try:

conn=MySQLdb.connect(host='localhost',user='root',

passwd='server',db='db',,charset='utf8')

cur=conn.cursor()

sql="insert into user(id,name,sex,email) VALUES (%s,%s,%s,%s)"

params=(1,'selenium2','boy','USA@qq.com')

cur.execute(sql,params)

conn.commit()

except Exception,e:

print u'操作mysql数据库失败'

else:

print u'插入后表的数据为:'

self.selectMySQL

finally:

cur.close()

conn.close()

@property

def updateMySQL(self):

try:

conn=MySQLdb.connect(host='localhost',user='root',

passwd='server',db='db',,charset='utf8')

cur=conn.cursor()

sql="update user set NAME=%s where id=%s"

params=('selenium webdriver',1)

cur.execute(sql,params)

conn.commit()

except Exception,e:

print u'操作mysql数据库失败'

else:

print u'修改后表的数据为:'

self.selectMySQL

finally:

cur.close()

conn.close()

@property

def deleteMySQL(self):

try:

conn=MySQLdb.connect(host='localhost',user='root',

passwd='server',db='db',,charset='utf8')

cur=conn.cursor()

sql="delete from USER WHERE id=%s"

params=(1)

cur.execute(sql,params)

conn.commit()

except Exception,e:

print u'操作mysql数据库失败'

else:

print u'删除后表的数据为:'

self.selectMySQL

finally:

cur.close()

conn.close()

发现在增,删,改,查方法中,都有MySQLdb.connect(host='localhost',user='root',passwd='server',db='db',,charset='utf8'),这意味着什么?意味着对mysql操作的方法,都得写MySQLdb.connect(host='localhost',user='root',passwd='server',db='db',,charset='utf8'),有多少个方法,就得写多少个,这样明显是不合理的,很明显是重复造轮子,而且也不符合python的简单而优雅的设计理念,那么开始重构这部分的代码,把一个配置文件config.py或者写一个类Config,把连接mysql的部分写成一个静态方法,有操作mysql的方法,直接调用即可。这里创建config.py的模块,见config.py模块的源码:

#coding:utf-8

conn=dict(host='127.0.0.1',user='root',passwd='server',db='db',charset='utf8')

见重构后的MySQLHelper类的源码:

#coding:utf-8

import MySQLdb

import config

class MySQLHelper(object):

def __init__(self):

self.__conn=config.conn

@property

def selectMySQL(self):

try:

conn=MySQLdb.connect(**self.__conn)

cur=conn.cursor()

except Exception,e:

print u'操作mysql数据库失败'

else:

cur.execute('select * from user;')

data=cur.fetchall()

for d in data:

print d

finally:

cur.close()

conn.close()

@property

def insertMySQL(self):

try:

conn=MySQLdb.connect(**self.__conn)

cur=conn.cursor()

sql="insert into user(id,name,sex,email) VALUES (%s,%s,%s,%s)"

params=(1,'selenium2','boy','USA@qq.com')

cur.execute(sql,params)

conn.commit()

except Exception,e:

print u'操作mysql数据库失败'

else:

print u'插入后表的数据为:'

self.selectMySQL

finally:

cur.close()

conn.close()

@property

def updateMySQL(self):

try:

conn=MySQLdb.connect(**self.__conn)

cur=conn.cursor()

sql="update user set NAME=%s where id=%s"

params=('selenium webdriver',1)

cur.execute(sql,params)

conn.commit()

except Exception,e:

print u'操作mysql数据库失败'

else:

print u'修改后表的数据为:'

self.selectMySQL

finally:

cur.close()

conn.close()

@property

def deleteMySQL(self):

try:

conn=MySQLdb.connect(**self.__conn)

cur=conn.cursor()

sql="delete from USER WHERE id=%s"

params=(1)

cur.execute(sql,params)

conn.commit()

except Exception,e:

print u'操作mysql数据库失败'

else:

print u'删除后表的数据为:'

self.selectMySQL

finally:

cur.close()

conn.close()

注解:把连接mysql的部分写在了config.py模块中,在该模块中,conn=dict(host='127.0.0.1',user='root',passwd='server',db='db',charset='utf8'),conn是一个字典,在类MySQKHelper中,初始化self.__conn=config.conn为私有字段,直接调用,这样连接mysql 的方法就直接即可。

本文分享自微信公众号 - Python自动化测试(wuya-python),作者:无涯

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python对mysql数据库的操作(一)

    本文章介绍python对mysql数据库的基本操作,以及编写一个模拟用户的注册。在自动化测试中,某些人认为是没有必要操作数据库的,理由是大多数的自动...

    无涯WuYa
  • sqlite3数据库的使用(一)

    sqlite是一个开源嵌入式的数据库,在移动平台部分,sqlite使用的比较多,如android的sdk就自带了sqlite3.exe,在platform-t...

    无涯WuYa
  • 工厂设计模式在自动化中的引用(二)

    工厂设计模式在自动化中的引用(一)中介绍了利用工厂设计模式,整合selenium2和appium,写在一个框架中,可以实现对web应用程序,移动应用程序...

    无涯WuYa
  • python 发送和接收ActiveMQ

    ActiveMQ是java开发的消息中间件服务。可以支持多种协议(AMQP,MQTT,OpenWire,Stomp),默认的是OpenWire。而python与...

    py3study
  • python数据库编程。

    http://www.makeru.com.cn/live/5020_2051.html?s=165154

    7537367
  • Python学习之GUI--SQL数据库连接

    在进行SQL数据库连接之前,我们需要先了解一下pymssql库。有关pymssql的解释推荐大家去官网学习。网上有关这方面的知识大部分是实例为主,不利于学习。另...

    明天依旧可好
  • [javaSE] java上传图片给PHP

    陶士涵
  • MySQL与Python的交互

    1、交互类型 1、安装引入模块 安装mysql模块,在windows和ubuntu中 ? windows里安装mysql模块 ? Linux里安装mysql模块...

    用户1332428
  • Python学习笔记-SQLSERVER

    环境 : python3.6 / win10 / vs2017 / sqlserver2017

    py3study
  • MySQL与Python的交互1.交互类型2.增删改查(CRUD)3.封装

    意气相许的许

扫码关注云+社区

领取腾讯云代金券