如何掌握Python异常处理问题

开发 后端
上回在进行对Python语言进行编制的时候,突然弹出了个对话框,上面写着PythonPython异常处理问题请及时关闭,这个是什么原因啊?

想要充分的掌握Python异常处理这门知识,那么就要对Python语言中的结构、语句、变量、函数、预处理指令、输入和输出等内容进行了解掌握,这样才可以轻轻松松的进行Python异常处理问题地解决。

下面介绍Python异常处理。导入必要的模块之后,animal.py使用connect()调用建立到服务器的连接。为了处理连接故障,比如,显示故障的原因,该脚本必须捕捉异常。在Python语言中,为了处理异常,必须把代码放到try语句中,并且包括一个except子句来包含错误处理代码。生成的连接的代码如下所示:

try:  
 
  conn = MySQLdb.connect (host = "localhost",  
 
  user = "testuser",  
 
  passwd = "testpass",  
 
  db = "test")  
 
  except MySQLdb.Error, e:  
 
  print "Error %d: %s" % (e.args[0], e.args[1])  
 
  sys.exit (1) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

Except子句中的异常类MySQLdb.Error用于取得MySQLdb可以提供的具体数据库错误信息,而变量e则用来存放错误信息。如果出现异常,MySQLdb会把有关信息存入e.args——这是一个包含错误代码和描述该错误的字符串组成的双元素元组。在本例中,except子句会打印这些值,然后退出。

任何数据库有关的语句都可以放入类似的try/except结构中来收集和报告错误,为了简便起见,后面的讨论中不再显示异常处理代码。接下来介绍用于发送语句的方法。Animal.py接下来的代码将创建一个游标对象,并利用它发送设置和填充动物表的语句。这部分代码如下所示:需要注意的是,这里的代码没有包含错误检查。

CREATE TABLE animal  
 
  (  
 
  name CHAR(40),  
 
  category CHAR(40)  
 
  )  本例中的表和一些语句取自于PEAR DB的说明文档。脚本animal.py的开头部分如下所示,从#!行可以看出它是打算运行于UNIX系统的:  
  #!/usr/bin/python  
 
  # animal.py - 创建动物表并从中检索信息  
 
  import sys  

 
  conn = MySQLdb.connect (host = "localhost",  
 
  user = "testuser",  
 
  passwd = "testpass",  
 
  db = "test")  
 
  except MySQLdb.Error, e:  
 
  print "Error %d: %s" % (e.args[0], e.args[1])  
 
sys.exit (1)  Except子句中的异常类MySQLdb.Error用于取得MySQLdb可以提供的具体数据库错误信息,而变量e则用来存放错误信息。
如果出现异常,MySQLdb会把有关信息存入e.args——这是一个包含错误代码和描述该错误的字符串组成的双元素元组。在本例中,except子句会打印这些值,然后退出。  
任何数据库有关的语句都可以放入类似的try/except结构中来收集和报告错误,
为了简便起见,后面的讨论中不再显示异常处理代码。  
接下来介绍用于发送语句的方法。Animal.py接下来的代码将创建一个游标对象,并利用它发送设置和填充动物表的语句。这部分代码如下所示:  
  cursor = conn.cursor ()  
 
  cursor.execute ("DROP TABLE IF EXISTS animal")  
 
  cursor.execute ("""  
 
  CREATE TABLE animal  
 
  (  
 
  name CHAR(40),  
 
  category CHAR(40)  
 
  )  
 
  """)  
 
  cursor.execute ("""  
 
  INSERT INTO animal (name, category)  
 
  VALUES  
 
  ('snake', 'reptile'),  
 
  ('frog', 'amphibian'),  
 
  ('tuna', 'fish'),  
 
  ('racoon', 'mammal')  
 
  """)  
 
  print "Number of rows inserted: %d" % cursor.rowcount 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.

请记住,Python异常处理可以放入try语句,这样一旦出错就会触发异常,继而被except子句所捕获并处理。但是考虑到代码的可读性,我们这里只给出了代码的主干部分。上面的语句将完成以下动作:
◆动物表已经存在,则丢弃它。
◆创建动物表。
◆向表中插入一些数据,并报告添加的行数。

这些语句都是通过调用游标对象的execute()方法发出的。其中前两个execute()语句不会生成数据,但是第三个语句将生成一个表示已经插入行数的统计量。这个统计数字存放在游标的rowcount属性中。有些数据库接口是通过execution运行调用的返回值来提供这个统计数字的,但是DB-API却不是这样。

此动物表已经建好,所以我们可以发出选择指令来从中检索信息了。如同前面的语句一样,SELECT语句也要使用execute()方法发出。然而,与DROP或者INSERT语句不同的是,SELECT语句会生成一个结果集合,也就是说,execute()仅仅发出语句,但是却没有返回结果集合。

我们可以使用fetchone()方法每次返回一行数据,或者使用fetchall()方法一次全部搞定。在animal.py中,这两者方法都用到了。下面是如何使用fetchone()每次检索一行数据的方法。

责任编辑:chenqingxiang 来源: 博客园
相关推荐

2010-03-01 14:40:00

Python RSS处

2010-01-12 17:26:37

C++编译器

2014-02-19 09:51:29

iOS开发时间处理

2018-09-18 23:32:35

物联网污水处理IOT

2010-05-17 14:59:05

MySQL事务处理

2016-11-14 10:06:04

大数据max位图

2011-04-06 10:27:46

Java异常处理

2009-11-05 12:45:25

WCF异常

2009-02-25 10:34:57

异常处理体系Python

2023-10-10 13:23:18

空指针异常Java

2022-04-24 16:29:28

千年虫时间计算机系统

2019-09-20 08:38:51

Python编程语言Java

2022-05-12 23:38:19

SQL数据库字符串

2021-03-10 18:26:49

Tensorflow语音识别音频处理

2025-02-05 10:02:03

Locust测试异常处理

2010-01-27 15:29:45

C++异常处理

2019-01-24 16:11:19

前端全局异常数据校验

2023-08-25 08:35:58

Rest方法字符串

2023-12-11 14:19:00

Java程序异常

2013-08-22 17:10:09

.Net异常处理
点赞
收藏

51CTO技术栈公众号