python library MySQLdb
MySQLdb install
1
2
3
4
5
6
7
8
9
10[root@localhost ~]# yum -y install python-devel
[root@localhost ~]# unzip MySQL-python-1.2.5.zip
[root@localhost ~]# cd MySQL-python-1.2.5
[root@localhost MySQL-python-1.2.5]# python setup.py build
[root@localhost MySQL-python-1.2.5]# python setup.py install
[root@localhost MySQL-python-1.2.5]# pip list|grep MySQL
MySQL-python (1.2.5)
或者:
[root@localhost ~]# pip install MySQL-pythonMySQLdb常用参数
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* connect() 方法用于连接数据库,返回一个数据库连接对象
例如: db = MySQLdb.connect(host="{hostname|IP}",user="{user}",passwd="{passwd}",db="{dbname}")
connect()的参数列表如下:
* host
连接的数据库服务器主机名,默认为本地主机(localhost)
* port
指定数据库服务器的连接端口,默认是3306
* user
连接数据库的用户名,默认为当前用户
* passwd
连接密码,没有默认值
* db
连接的数据库名,没有默认值
* unix_socket
在unix中,连接使用的套接字,默认使用TCP
* conv
将文字映射到Python类型的字典.默认为MySQLdb.converters.conversions
* cursorclass
cursor()使用的种类,默认值为MySQLdb.cursors.Cursor
* compress
启用协议压缩功能
* named_pipe
在windows中,与一个命名管道相连接
* init_command
一旦连接建立,就为数据库服务器指定一条语句来运行
* read_default_file
使用指定的MySQL配置文件
* read_default_group
读取的默认组
* 连接对象的db.close()方法可关闭数据库连接,并释放相关资源
* 连接对象的db.cursor([cursorClass])方法返回一个指针对象,用于访问和操作数据库中的数据
* 连接对象的db.begin()方法用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用commit()和rollback()结束
* 连接对象的db.commit()和db.rollback()方法分别表示事务提交和回退
* 指针对象的cursor.close()方法关闭指针并释放相关资源
* 指针对象的cursor.execute(query[,parameters])方法执行数据库查询
* 指针对象的cursor.fetchall()可取出指针结果集中的所有行,返回的结果集一个元组(tuples)
* 指针对象的cursor.fetchmany([size=cursor.arraysize])从查询结果集中取出多行,我们可利用可选的参数指定取出的行数
* 指针对象的cursor.fetchone()从查询结果集中返回下一行
* 指针对象的cursor.arraysize属性指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1
* 指针对象的cursor.rowcount属性指出上次查询或更新所发生行数.-1表示还没开始查询或没有查询到数据通过 MySQLdb 验证连通性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[root@localhost ~]# cat dbtest.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1',
unix_socket='/mnt/data/mysql/3306/mysql.sock',
db='test')
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print "Database version : %s " % data
db.close()
[root@localhost ~]# python dbtest.py
Database version : 5.6.36-log通过 MySQLdb 创建表
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[root@localhost ~]# cat dbtest.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1',
unix_socket='/mnt/data/mysql/3306/mysql.sock',
db='test')
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
cursor.execute("SHOW TABLES")
data = cursor.fetchall()
print "%s" % data
db.close()
[root@localhost ~]# python dbtest.py
('EMPLOYEE',)通过 MySQLdb 插入数据
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[root@localhost ~]# cat dbtest.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1',
unix_socket='/mnt/data/mysql/3306/mysql.sock',
db='test')
cursor = db.cursor()
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
[root@localhost ~]# python dbtest.py通过 MySQLdb 查询数据
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[root@localhost ~]# cat dbtest.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1',
unix_socket='/mnt/data/mysql/3306/mysql.sock',
db='test')
cursor = db.cursor()
sql = "SELECT * FROM EMPLOYEE"
try:
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income )
except:
print "Error: unable to fecth data"
db.close()
[root@localhost ~]# python dbtest.py
fname=Mac,lname=Mohan,age=20,sex=M,income=2000通过 MySQLdb 更新数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22[root@localhost ~]# cat dbtest.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1',
unix_socket='/mnt/data/mysql/3306/mysql.sock',
db='test')
cursor = db.cursor()
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
[root@localhost ~]# python dbtest.py通过 MySQLdb 删除数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22[root@localhost ~]# cat dbtest.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1',
unix_socket='/mnt/data/mysql/3306/mysql.sock',
db='test')
cursor = db.cursor()
sql = sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (10)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
[root@localhost ~]# python dbtest.py