Python连接mysql数据库并进行增删改查操作

algorain

今天在使用Python连数据库的时候忘了怎么写了,到博客里看了一下只有PHP和Java的,只好去笔记里找了以前的记录,写完代码就把关于Python连数据库的文章补了,顺便把一些常用的操作写出来,方便用的时候看一看。

记得我刚使用Python连数据库的时候研究很长时间,我电脑里的mysql是phpstudy集成的,我又在虚拟机里测试,最后才发现下面是又报错代号的,主机名出现错误是2003,而我一直忽略了这个最下面的错误,查了错误代号发现是localhost的错,将主机名由原来的localhost更改为127.0.0.1,这个是主机测试地址,在使用Django的时候就出现过这个测试地址。在PHP和Java上用习惯了,我在PHP上试了一下127.0.0.1也是可以的,都是主机测试地址,可能Python比较奇怪吧,解决了这个问题再连接就很简单了。

注意connect里的charset=utf8,这个是要和你数据库的字符集匹配的,如果不写这个,查出来的中文数据就是乱码,而不是编码字符,下面还有常用的一些操作,

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
1.连接的建立和释放
-- coding=utf-8 --
import MySQLdb
conn= MySQLdb.connect(
host='127.0.0.1',
port = 3306,
user='root',
passwd='root',
db ='manage',
charset='utf8',
)
cur = conn.cursor()
#创建数据表
#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
#插入一条数据
#cur.execute("insert into student values('2','Tom','3 year 2 class','9')")
#修改查询条件的数据
#cur.execute("update student set class='3 year 1 class' where name = 'Tom'")
#删除查询条件的数据
#cur.execute("delete from student where age='9'")
cur.close()
conn.commit()
conn.close()
查询操作
cursor用来接收返回值的方法:
fetchall(self) 接收全部的返回结果行.
fetchmany(self, size=None) 接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self) 返回一条结果行.
rowcount 这是一个只读属性,并返回执行execute() 方法后影响的行数。
scroll(self, value, mode='relative') 移动指针到某一行; 如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.
#获得表中有多少条数据
aa=cur.execute("select * from student")
print aa
#打印表中的多少数据
info = cur.fetchmany(aa)
for ii in info:
print ii
插入操作
cursor用来执行命令的方法:
callproc(self, procname, args) 用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args) 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args) 执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self) 移动到下一个结果集
#插入一条数据
sqli="insert into student values(%s,%s,%s,%s)"
cur.execute(sqli,('3','Huhu','2 year 1 class','7'))
#一次插入多条记录
sqli="insert into student values(%s,%s,%s,%s)"
cur.executemany(sqli,[
('3','Tom','1 year 1 class','6'),
('3','Jack','2 year 1 class','7'),
('3','Yaheng','2 year 2 class','7'),
])
  • Title: Python连接mysql数据库并进行增删改查操作
  • Author: algorain
  • Created at: 2017-02-02 21:46:24
  • Updated at: 2023-05-14 21:39:50
  • Link: http://www.rain1024.com/2017/02/02/python-article48/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments