[TOC]
连接数据库
pymysql.connect
-
提供了连接数据库的方法,该方法会连接数据库并且返回一个对象,表示当前到数据库的会话
-
相关操作如下
import pymysql
conn=pymysql.connect(host='127.0.0.1',port='3306',user='root',passwd='198903017',
db='api_database',use_unicode=True, charset="utf8",)
游标
pymysql自定义封装函数
- 做接口自动化框架时封装的关于数据库操作的类以及类里面的一些函数
import pymysql
from Common.CommonTools.PathTools import config_path
from Common.CommonTools.ConfigReadTools import ConfigReadTools
'''数据库操作相关函数'''
class DataBaseTools:
def __init__(self):
'''初始化-连接数据库'''
self.conn=self._connent_db() #连接数据库
self.cur=self.conn.cursor() #创建游标
def _connent_db(self):
'''连接数据库'''
configread = ConfigReadTools(config_path)
database_conf = configread.get_section_item('DATABASE_CONF')
try:
conn=pymysql.connect(host=database_conf['Host'], #数据库地址
port=int(database_conf['Port']), #端口号
user=database_conf['User'], #登录用户名
passwd=database_conf['Password'], #登录密码
db=database_conf['DB'], #连接的数据库
use_unicode=True, charset="utf8",)
return conn
except Exception as e:
print('[Error] 数据库连接失败,具体错误:%s'%e)
def execute_sql(self,sql):
'''
执行sql语句
:param sql:sql语句
'''
try:
self.cur.execute(sql) #执行sql
except Exception as e:
self.conn.rollback() #回退数据库
print('[Error] sql语句有误,数据库回退,具体错误:%s'%e)
else:
self.conn.commit() #sql正确时才进行提交
def get_select_alldata(self,selectsql):
'''
获取查询sql对应的所有数据
:param sql: select sql语句
:return: 查询数据信息
'''
try:
if 'Select' in selectsql or 'select' in selectsql or 'SELECT' in selectsql:
self.cur.execute(selectsql)
except Exception as e:
self.conn.rollback()
print('[Error] 查询sql语句有误.数据库回退,具体错误:%s'%e)
else:
try:
result = self.cur.fetchall() # 获取查询结果
return result
except Exception as a:
print('[Error] 执行sql报错,具体错误:%s'%a)
def get_selectdata_row(self,selectsql,index):
'''
获取查询sql反馈的某一行数据
:param selectsql: 查询sql语句
:param index: 指定一行数据
:return: 反馈指定一行的数据
'''
result=self.get_select_alldata(selectsql)
return result[index]
def get_selectdata_column(self,selectsql,index):
'''
获取查询sql反馈的某一列数据
:param selectsql:查询sql语句
:param index:指定一列数据
:return:反馈指定一列的数据
'''
column_data=[]
result=self.get_select_alldata(selectsql)
for i in range(len(result)):
column_data.append(result[i][index])
return column_data
def get_specific_data(self,selectsql,rowindex,columnindex):
'''
获取指定的某一行的某一列的值,获取特定某个数据
:param selectsql: 查询sql语句
:param rowindex: 指定行数
:param columnindex: 指定列数
:return: 特定某个数据
'''
result=self.get_select_alldata(selectsql)
return result[rowindex][columnindex]
def check_value_isnull(self,selectsql,rowindex,columnindex):
'''
检查指定单元格的value是否为空,空返回True,非空返回False
:param selectsql: 查询sql语句
:param rowindex: 指定行数
:param columnindex: 指定列数
:return: True/False
'''
value=self.get_specific_data(selectsql,rowindex,columnindex)
if value==None:
return True
else:
return False
def cur_close(self):
'''关闭游标'''
self.cur.close()
def close_db(self):
'''关闭数据库'''
try:
self.conn.close()
except Exception as e:
print('[Error] 数据库关闭出错.具体错误:%s'%e)