博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3 Selenium Python 数据库及文件
阅读量:4974 次
发布时间:2019-06-12

本文共 6440 字,大约阅读时间需要 21 分钟。

1 MySQL

1.1 安装

下载:MySQL-python-1.2.3.win-amd64-py2.7直接安装,要求Python2.7(Python version 2.7 required)

验证:import MySQLdb 不报错就可以了

1.2 基础

1 连接数据库:MySQLdb.connect(host='',port='',user='',passwd='',db='')

class Connection(_mysql.connection):

    """MySQL Database Connection Object"""
    default_cursor = cursors.Cursor
    
    def __init__(self, *args, **kwargs):
        """
        Create a connection to the database. It is strongly recommended
        that you only use keyword parameters. Consult the MySQL C API
        documentation for more information.
        host
          string, host to connect  
        user
          string, user to connect as
        passwd
          string, password to use
        db
          string, database to use
        port
          integer, TCP/IP port to connect to
        charset
          If supplied, the connection character set will be changed
          to this character set (MySQL-4.1 and newer). This implies
          use_unicode=True.
        """

2 操作数据库:首先需要获得一个cursor对象, 然后使用cursor的方法执行SQL

  • execute(sql, args):执行单条sql语句,接收的参数为sql语句和参数列表,返回值为受影响的行数

    def execute(self, query, args=None):

        """Execute a query.
   
        query -- string, query to execute on server
        args -- optional sequence or mapping, parameters to use with query.
        Note: If args is a sequence, then %s must be used as the
        parameter placeholder in the query. If a mapping is used,
        %(key)s must be used as the placeholder.
        Returns long integer rows affected, if any
        """

  • callproc( procname, args):执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
  • executemany(sql, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
  • nextset():移动到下一个结果集

3 接收返回值:也是使用cursor对象的方法进行接收

  • fetchone():返回一条结果
  • fetchall():返回全部结果
  • fetchmany(size=None):返回size条结果。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据
  • scroll(value, mode='relative'):移动指针到某一行.
  • mode='relative',则表示从当前所在行移动value条
  • mode='absolute',则表示从结果集的第一 行移动value条.

4 关闭数据库:需要关闭cursor对象connect对象

1.3 举例

1 #配置文件=============================  2 #DB配置文件  3 [db]  4 host = 127.0.0.1  5 port = 3306  6 user = root  7 passwd =  8 dbname = test  9  10 #配置文件解析类============================= 11 #!/usr/bin/env python 12 # coding=utf-8 13  14 import ConfigParser 15  16 class Configer(object): 17      18     #构造函数,初始化ConfigParser类,并读取config文件 19     def __init__(self , filePath): 20         self.conf = ConfigParser.ConfigParser() 21         self.conf.read(filePath) 22      23     #获取key的value  24     def getConf(self , section , key): 25         result = self.conf.get(section, key) 26         return result 27  28 #解析配置文件============================= 29 #!/usr/bin/env python 30 # coding=utf-8 31  32 from testdb.Configer import * 33  34 class db(object): 35     conf = Configer("./db.conf") 36     host = conf.getConf('db', 'host') 37     port = conf.getConf('db', 'port') 38     user = conf.getConf('db', 'user') 39     passwd = conf.getConf('db', 'passwd') 40     dbname = conf.getConf('db', 'dbname') 41  42 #数据库封装及测试============================= 43 #!/usr/bin/env python 44 #encoding=UTF-8 45  46 from MySQLdb import * 47 import sys 48 from testdb.db import * 49  50 # print db.host 51 class MySQLEngine(object): 52       53     def __init__(self): 54         self.conn = None 55         self.cur = None 56           57     ''' 58             打开数据库 59     ''' 60     def open(self,dbHost,dbPort,dbUser,dbPasswd,dbName): 61         self.conn = connect(host=dbHost,port=dbPort,user=dbUser,passwd=dbPasswd,db=dbName,charset='utf8') 62         self.cur = self.conn.cursor()   #拿到游标,sql语句需要游标执行 63     ''' 64         查询一条 65     '''      66     def searchOne(self,sql): 67         affRows = self.cur.execute(sql) #通过游标执行查询操作,返回影响行数 68         res = self.cur.fetchone()    69         return res,affRows 70     ''' 71         查询指定条数 72     '''      73     def searchMany(self,sql,size): 74         affRows = self.cur.execute(sql) #通过游标执行查询操作,返回影响行数 75         res = self.cur.fetchmany(size)  #每条结果都是一个tuple,所有tuple最终组成一个tuple 76         return res,affRows 77     ''' 78         查询所有 79     ''' 80     def searchAll(self,sql): 81         affRows = self.cur.execute(sql) #通过游标执行查询操作,返回影响行数 82         res = self.cur.fetchall() 83         return res,affRows 84     ''' 85         该改记录,包括:增、删、改 86     ''' 87     def modify(self,sql,params): 88         affRows = self.cur.execute(sql,params) 89         self.conn.commit()  #不commit不会修改到数据库中 90         return affRows 91     ''' 92         关闭数据库 93     ''' 94     def close(self): 95         self.cur.close() 96         self.conn.close() 97           98 #实例化 99 mysql = MySQLEngine()100 #连接数据库101 mysql.open(db.host,int(db.port),db.user,db.passwd,db.dbname)102 #单个查询103 (result,affRows) = mysql.searchOne('SELECT * FROM t_redis WHERE id=1;')104 print result[2]105 print affRows106 #指定个数查询107 (result,affRows) = mysql.searchMany('SELECT * FROM t_redis WHERE id>1;' , 3)108 print result109 print affRows110 #插入111 sql = "INSERT INTO t_redis(test_id , test_info) VALUES(%s,%s);"112 params = ('00019','豆腐')113 print mysql.modify(sql, params)114 mysql.close()115 116 #测试结果=============================117 张飞118 1119 120 ((2, u'2', u'info_2'), (5, u'0005', u'\u7a7a\u7075'), (15, u'00015', u'\u5c06\u519b'))121 6122 123 1
View Code

 2 xlutils Excel

2.1 简介

python处理excel文件主要是第三方模块库xlrd、xlwt、xluntils

  • xlrd读取excel但是不能对其进行操作
  • xlwt生成excel文件,不能在已有的excel文件基础上进行修改
  • 如需要修改文件就要使用xluntils模块

2.2 安装

  • xlutils 依赖xlrd和xlwt,pip install xlutils 安装会自动安装xlrd和xlwt
  • xlutils 只能处理xls文件

 2.3 举例

1 #!/usr/bin/env python 2 # coding=utf-8 3  4 from xlrd import open_workbook 5 from xlutils.copy import copy 6 # 7 rbook = open_workbook(u'C:\\测试数据2.xls') 8 rsheet = rbook.sheet_by_name('测试用例') 9 wbook = copy(rbook)10 #读操作11 print rsheet.cell(1,1).value12 #写操作,通过get_sheet()获取的sheet有write()方法13 wsheet = wbook.get_sheet(0)14 wsheet.write(2, 4, 'changed!')15  16 wbook.save(u'C:\\测试数据2.xls')
View Code

 3 openpyxl Excel

3.1 简介

A Python library to read/write Excel 2007 xlsx/xlsm files

openpyxl是Python处理表格的库之一,但是它是处理excel2007/2010的格式,也就是xlsx系列,如果要处理以前的2003的表格(xls),那么则要用另外的库

如果只是要进行表格数据读取和进行简单的写数据的话,推荐使用openpyxl

3.2 安装

openpyxl依赖jdcal ,pip install openpyxl安装会自动安装jdcal 

3.3 举例

1 #!/usr/bin/env python 2 # coding=utf-8 3 from openpyxl.workbook import Workbook 4 from openpyxl.reader.excel import load_workbook 5  6 #指定excel 7 book = load_workbook(filename=u'C:\\测试数据3.xlsx')   8 #指定sheet页 9 sheet = book.get_sheet_by_name('xml字段')10 #最大行列数11 print sheet.max_row12 print sheet.max_column13 # column=len(sheet.column)14 #获取指定cell的值15 print sheet.cell(row=2, column=1).value16 #指定cell写入值17 sheet.cell(row=6,column=6).value = "value3333"18 #保存19 book.save(u'C:\\测试数据3.xlsx')
View Code

 

转载于:https://www.cnblogs.com/lizitest/p/6664037.html

你可能感兴趣的文章
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
SQL语言之概述(一)
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>
IDEA使用操作文档
查看>>
UIView
查看>>
添加日期选择控件
查看>>
bzoj4765: 普通计算姬 (分块 && BIT)
查看>>
看完漫画秒懂区块链
查看>>