con =mdb.connect('localhost', 'root', 'root', 'test');
with con:
#获取执行查询的对象
cur =con.cursor()
#执行那个查询,这里用的是 select 语句
cur.execute("SELECT * FROM Writers")
#使用 cur.rowcount 获取结果集的条数
numrows =int(cur.rowcount)
#循环 numrows 次,每次取出一行数据
fori inrange(numrows):
#每次取出一行,放到 row 中,这是一个元组(id,name)
row =cur.fetchone()
#直接输出两个元素
printrow[0], row[1]
运行结果:
1 Jack London 2 Honore de Balzac 3 Lion Feuchtwanger 4 Emile Zola 5 Truman Capote 实例 4、使用字典 cursor 取得结果集(可以使用表字段名字访问值)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
importMySQLdb as mdb
importsys
#获得 mysql 查询的链接对象
con =mdb.connect('localhost', 'root', 'root', 'test')
with con:
#获取连接上的字典 cursor,注意获取的方法,
#每一个 cursor 其实都是 cursor 的子类
cur =con.cursor(mdb.cursors.DictCursor)
#执行语句不变
cur.execute("SELECT * FROM Writers")
#获取数据方法不变
rows =cur.fetchall()
#遍历数据也不变(比上一个更直接一点)
forrow inrows:
#这里,可以使用键值对的方法,由键名字来获取数据
print"%s %s"%(row["Id"], row["Name"])
实例 5、获取单个表的字段名和信息的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
importMySQLdb as mdb
importsys
#获取数据库的链接对象
con =mdb.connect('localhost', 'root', 'root', 'test')
with con:
#获取普通的查询 cursor
cur =con.cursor()
cur.execute("SELECT * FROM Writers")
rows =cur.fetchall()
#获取连接对象的描述信息
desc =cur.description
print'cur.description:',desc
#打印表头,就是字段名字
print"%s %3s"%(desc[0][0], desc[1][0])
forrow inrows:
#打印结果
print"%2s %3s"%row
运行结果:
cur.description: ((‘Id', 3, 1, 11, 11, 0, 0), (‘Name', 253, 17, 25, 25, 0, 1)) Id Name 1 Jack London 2 Honore de Balzac 3 Lion Feuchtwanger 4 Emile Zola 5 Truman Capote 实例 6、使用 Prepared statements 执行查询(更安全方便)
1
2
3
4
5
6
7
8
9
10
11
importMySQLdb as mdb
importsys
con =mdb.connect('localhost', 'root', 'root', 'test')
with con:
cur =con.cursor()
#我们看到,这里可以通过写一个可以组装的 sql 语句来进行
cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s",
("Guy de Maupasant", "4"))
#使用 cur.rowcount 获取影响了多少行
print"Number of rows updated: %d"%cur.rowcount
结果: Number of rows updated: 1
实例 7、把图片用二进制存入 MYSQL
有人喜欢把图片存入 MYSQL(这种做法貌似很少吧),我看大部分的程序,图片都是存放在服务器上的文件,数据库中存的只是图片的地址而已,不过 MYSQL 是支持把图片存入数据库的,也相应的有一个专门的字段 BLOB (Binary Large Object),即较大的二进制对象字段,请看如下程序,注意测试图片自己随便找一个,地址要正确: 首先,在数据库中创建一个表,用于存放图片: