python操作MYSQL实例及异常信息处理

  1. span style="font-size:14px;">import pymysql as mysql # pip install PyMySQL Python3的安装方式  
  2. #引入python中的traceback模块,跟踪错误  
  3. import traceback  
  4. #引入sys模块  
  5. import sys  
  6.   
  7. class MysqlUtil():  
  8.     def __init__(self):  
  9.         pass  
  10.   
  11.     """ 
  12.         获取数据库的连接 
  13.     """  
  14.     def getConnect(self):  
  15.         # 参数依次是:IP地址,数据库登录名,数据库密码,数据库实体名称,指定字符集 (未指定可能出现中文乱码)  
  16.         db = mysql.connect("localhost","root","123456","python",charset='utf8')  
  17.         return db  
  18.   
  19.     ''''' 
  20.         创建数据表 
  21.         tableName:数据表名称 
  22.         sql: 数据表的创建sql语句 
  23.     '''  
  24.     def createTable(self,tableName,sql):  
  25.         # 获取数据库连接  
  26.         db = self.getConnect()  
  27.         #使用cursor() 方法创建一个游标对象 cursor  
  28.         cursor =  db.cursor()  
  29.         # 使用execute()方法执行sql ,如果表存在则删除  
  30.         cursor.execute("drop table if exists %s" %(tableName))  
  31.         # 使用预处理语句创建表  
  32.         cursor.execute(sql)  
  33.         # 关闭数据库连接  
  34.         db.close()  
  35.     ''''' 
  36.         插入数据库 
  37.         sql:插入数据库的sql语句 
  38.     '''  
  39.     def insertTable(self,sql):  
  40.         #获取数据库连接  
  41.         db = self.getConnect()  
  42.         #使用cursor() 方法创建一个游标对象 cursor  
  43.         cursor = db.cursor()  
  44.   
  45.         try:  
  46.             #执行sql语句  
  47.             cursor.execute(sql)  
  48.             #提交到数据库执行  
  49.             db.commit()  
  50.         except Exception: #方法一:捕获所有异常  
  51.             #如果发生异常,则回滚  
  52.             print("发生异常",Exception)  
  53.             db.rollback()  
  54.         finally:  
  55.             #最终关闭数据库连接  
  56.             db.close()  
  57.   
  58.     ''''' 
  59.         查询数据库:单个结果集 
  60.         fetchone(): 该方法获取下一个查询结果集。结果集是一个对象 
  61.     '''  
  62.     def fetchone(self,sql):  
  63.         # 获取数据库连接  
  64.         db = self.getConnect()  
  65.         # 使用cursor() 方法创建一个游标对象 cursor  
  66.         cursor = db.cursor()  
  67.         try:  
  68.             # 执行sql语句  
  69.             cursor.execute(sql)  
  70.             result = cursor.fetchone()  
  71.         except#方法二:采用traceback模块查看异常  
  72.             #输出异常信息  
  73.             traceback.print_exc()  
  74.             # 如果发生异常,则回滚  
  75.             db.rollback()  
  76.         finally:  
  77.             # 最终关闭数据库连接  
  78.             db.close()  
  79.         return result  
  80.   
  81.     ''''' 
  82.         查询数据库:多个结果集 
  83.         fetchall(): 接收全部的返回结果行. 
  84.     '''  
  85.     def fetchall(self,sql):  
  86.         # 获取数据库连接  
  87.         db = self.getConnect()  
  88.         # 使用cursor() 方法创建一个游标对象 cursor  
  89.         cursor = db.cursor()  
  90.         try:  
  91.             # 执行sql语句  
  92.             cursor.execute(sql)  
  93.             results = cursor.fetchall()  
  94.         except#方法三:采用sys模块回溯最后的异常  
  95.             #输出异常信息  
  96.             info = sys.exc_info()  
  97.             print( info[0], ":", info[1])  
  98.             # 如果发生异常,则回滚  
  99.             db.rollback()  
  100.         finally:  
  101.             # 最终关闭数据库连接  
  102.             db.close()  
  103.         return results  
  104.   
  105.     ''''' 
  106.         删除结果集 
  107.     '''  
  108.     def delete(self,sql):  
  109.         # 获取数据库连接  
  110.         db = self.getConnect()  
  111.         # 使用cursor() 方法创建一个游标对象 cursor  
  112.         cursor = db.cursor()  
  113.         try:  
  114.             # 执行sql语句  
  115.             cursor.execute(sql)  
  116.             db.commit()  
  117.         except#如果你还想把这些异常保存到一个日志文件中,来分析这些异常  
  118.             #将错误日志输入到目录文件中  
  119.             f = open("c:log.txt"'a')  
  120.             traceback.print_exc(file=f)  
  121.             f.flush()  
  122.             f.close()  
  123.             # 如果发生异常,则回滚  
  124.             db.rollback()  
  125.         finally:  
  126.             # 最终关闭数据库连接  
  127.             db.close()  
  128.   
  129.     ''''' 
  130.         更新结果集 
  131.     '''  
  132.     def update(self,sql):  
  133.         # 获取数据库连接  
  134.         db = self.getConnect()  
  135.         # 使用cursor() 方法创建一个游标对象 cursor  
  136.         cursor = db.cursor()  
  137.         try:  
  138.             # 执行sql语句  
  139.             cursor.execute(sql)  
  140.             db.commit()  
  141.         except:  
  142.             # 如果发生异常,则回滚  
  143.             db.rollback()  
  144.         finally:  
  145.             # 最终关闭数据库连接  
  146.             db.close()  
  147.   
  148.   
  149.   
  150.   
  151. app = MysqlUtil()  
  152. #======================创建表结构==============================  
  153. #表名称  
  154. tableName = "user"  
  155. #见表语句  
  156. tableSql = """ 
  157.     CREATE  table user( 
  158.         id bigint(20) NOT NULL AUTO_INCREMENT, 
  159.         name varchar(50) NOT NULL, 
  160.         sex varchar(2) NOT NULL, 
  161.         age int, 
  162.         PRIMARY KEY (`id`) 
  163.     ) 
  164. """  
  165. #调用创建表语句  
  166. # app.createTable(tableName,tableSql)  
  167. #====================================================  
  168.   
  169. #=======================插入数据库=============================  
  170.   
  171. insertSql = "INSERT INTO user(name,sex,age) \  
  172.        VALUES ('%s''%s''%d')" % \  
  173.        ('jack''女'18)  
  174. # app.insertTable(insertSql)  
  175.   
  176. #=======================查询单个数据库=============================  
  177.   
  178. fetchoneSql = "SELECT * FROM user  WHERE id = '%d'" % (1)  
  179. user = app.fetchone(fetchoneSql)  
  180. print(user)  
  181.   
  182. #=======================查询多个数据库=============================  
  183.   
  184. fetchallSql = "SELECT * FROM user  WHERE id > '%d'" % (0)  
  185. users = app.fetchall(fetchallSql)  
  186. print(users)  
  187.   
  188. #=======================更新数据库=============================  
  189.   
  190. updateSql = "update  user  set age = age + 1 ,sex = '%s' where id = '%d'" % ('未知',1)  
  191. # app.update(updateSql)  
  192.   
  193.   
  194. #=======================删除数据库=============================  
  195. delSql = "delete from user where id = '%d'" % (1)  
  196. app.delete(delSql)  
  197. # fetchoneSql = "SELECT * FROM user  WHERE id = '%d'" % (1)  
  198. # user = app.fetchone(fetchoneSql)  
  199. # print(user)  
  200. </span>  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值