Python基础(2)
1、MySQL API
1)安装
在https://pypi.python.org/pypi/MySQL-python下载MySQL-python包 -> 解压后进入目录,先后执行sudo python setup.py build和sudo python setup.py install。
可能出现的错误及解决方案:
(1)sudo python setup.py build时出现错误EnvironmentError: mysql_config not found:先执行sudo apt-get install libmysqld-dev修复问题;
(2)sudo python setup.py install时出现错误pymemcompat.h:10:20: fatal error: Python.h: 没有那个文件或目录:先执行sudo apt-get install python-dev修复问题。
2)使用
>>> import MySQLdb
>>> db = MySQLdb.connect("192.168.0.1", "user", "passwd", "db") # 打开数据库连接 >>> cursor = db.cursor() # 获取操作游标 >>> cursor.execute("show tables") >>> rows = cursor.fetchall() # cursor.fetchone()获取"结果集指针"当前所指的一条记录;cursor.rowcount获取结果集大小 >>> for row in rows: ... print row[0] # row是一个元组 ... test1 test2 test3 >>> db.close() # 关闭数据库连接
另外,Python DB API的事务还提供了两个方法:db.commit()和db.rollback()。
2、异常处理
>>> try: ... 1 + "abc" ... print "shit" ... except TypeError: # 此处可以没有或有多种异常 ... print "TypeError Exception occurs" ... else: # 没有异常发生 ... print "successfully" ...
另外,关键词finally可以定义"无论是否发生异常都会执行"的分支。
>>> def MyConvert(var): ... try: ... return int(var) ... except ValueError, Argument: # ValueError异常类的实例Argument ... print "The argument does not contain numbers\n", Argument ... return Argument ... >>> c = MyConvert("xyz") The argument does not contain numbers invalid literal for int() with base 10: 'xyz' >>> c ValueError("invalid literal for int() with base 10: 'xyz'",) >>> int("xyz") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'xyz'
用户自定义异常:
>>> class NetworkError(RuntimeError): # 继承自RuntimeError类 ... def __init__(self, arg=()): ... self.args = arg ... >>> try: ... raise NetworkError(("Bad hostname", "Bad port")) # raise触发异常 ... except NetworkError, e: # e是NetworkError类的实例 ... print e.args ... ('Bad hostname', 'Bad port')
3、获取命令行参数
import sys print sys.argv[0] # 脚本名 print sys.argv[1] # 第一个参数
4、输入输出
1)输入
>>> str=raw_input("Enter your input:") # 该函数从标准输入读取一行并返回一个字符串(去掉结尾的换行符) Enter your input:hello world >>> print str hello world >>> str=input("Enter your input:"); # 该函数和raw_input基本可以互换,但它会假设输入是Python表达式,并返回运算结果 Enter your input:[x * 5 for x in range(2, 10, 2)] >>> print str [10, 20, 30, 40]
参考资料:
http://www.w3cschool.cc/python/python-tutorial.html
不断学习中。。。