# python

python捕获异常堆栈信息

python的异常对称相比java或php简单了很多,对象中的信息很少,只有简单的错误输出。这在开发过程中是无法满足使用需求的。我们还需要更多的错误信息,比如错误发生在哪一行,具体的错误信息是什么。这就需要获取错误堆栈信息。下面简单记录一下常用的集中异常处理。

python mysql-connector简要说明

安装插件

1
python -m pip install mysql-connector

建立链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mysql.connector

# 接收参数:user, password, host, port=3306, unix_socket and database
# 返回一个MySQLConnection Object
config = {
'host': '127.0.0.1',
'user': 'root',
'password': 'root',
'port': 3306,
'database': 'test',
'charset': 'utf8'
}
try:
cnn = mysql.connector.connect(**config)
except mysql.connector.Error as e:
print('connect fails!{}'.format(e))

conn就是mysql的链接对象,它可以提交开启事务、提交、回滚,也可以关闭来mysql断开链接

查询操作

执行查询,需要经过以下几个过程:

  1. 获取一个游标,数据操作都是基于游标来处理。链接的cursor方法会返回一个游标,如上面conn.cursor()就会返回游标。
  2. 调用游标的execute方法,执行sql。
  3. 获取执行结果,我们可以用fetchone()一次获取一条记录,也可以用fetchall(),一次性获取所有记录。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cursor = cnn.cursor()
    try:
    sql_query = 'select name,age from stu ;'
    cursor.execute(sql_query)
    for name, age in cursor:
    print (name, age)
    except mysql.connector.Error as e:
    print('query error!{}'.format(e))
    finally:
    cursor.close()
    cnn.close()

pipenv与pyenv、pyenv-virtualenv的关系和使用

为什么要有版本管理

我们举个例子:

  1. 项目一要求用python 2.x
  2. 项目二要去python 3.x

如果服务器上要运行这两个项目,就需要安装两个版本。如果项目更多,需要的版本也越多,我们就需要有版本管理的概念。

为什么要有虚拟版本

上面我们看到,版本管理解决了,不同项目对python版本的需求。如果我们服务器上有增加了一个项目,情况如下,如果解决呢

  1. 项目一要求用python 2.x
  2. 项目二要去python 3.x,要求导入的requests包是1.x
  3. 项目三要去python 3.x,要去导入的requests包是2.x

我们看到项目二和项目三要去的是同样的版本,但是依赖的包是不同版本的,我们无法在一个版本上,同一个包安装不同的版本。这样容易造成混乱。因此就需要虚拟环境了。虚拟环境就是在所需的版本上,创建一个副本,在副本里进行依赖包的管理,这样不同的项目用自己的副本,就不会相互干扰。