今天在使用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 54 |
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'), ]) |