python与mysql交互_Python和Mysql交互

安装引入模块

~安装mysql模块

sudo apt-get install python-mysqldb

~在文件中引入模块

import MySQLdb

Connection对象

用于建立与数据库的连接,创建对象:调用connect()方法

conn=MySQLdb.connect(参数列表)

其中参数列表有:

host: 连接的mysql主机,如果本机是'localhost';

port: 连接的mysql主机的端口,默认是3306;

db: 数据库的名称;

user: 连接的用户名;

passwd: 连接的密码;

charset: 通信采用的编码方式,推荐使用utf8

对象的方法

close() 关闭连接

commit()事务,所以需要提交才会生效;

rollback()事务,放弃之前的操作;

cursor()返回Cursor对象,用于执行sql语句并获得结果;

Cursor对象

执行sql语句

创建对象:调用Connection对象的cursor()方法

cursor1 = conn.cursor();

对象方法:

close() 关闭

execute(operation [,parameters])执行语句,返回受影响的行数

fetchone()执行查询语句,获取查询结果集的第一行数据,返回一个元祖

next() 执行查询语句时,获取当前行的下一行

fetchall() 执行查询,获取结果集中的所有行,一行组成一个元祖,再将所有的元祖组装成功一个元祖返回

scroll(value [, mode]) 将行指针移动到某个位置

mode 表示移动的方式

mode 的默认值为relative,表示基于当前行移动到value,value为正则向下移动,value为负则向上已动工

mode的值为absolute,表示基于第一条数据的位置,第一条数据的位置为0

对象的属性

rowcount只读属性,表示最近一次execute()执行后受影响的行数

connection获得当前连接对象

案例:

插入

1 #coding=utf-8

2

3 from MySQLdb import *

4

5 try:6 conn=connect(host='localhost',port=3306,user='root',passwd='mysql',db='python3',charset='utf8')7

8 cursor1 =conn.cursor()9

10 sql = 'insert into student(name) values('liu')'

11

12 cursor1.execute(sql)13

14 conn.commit()15

16 cursor1.close()17

18 conn.close()19

20 exceptException,e:21

22 print(e.message)

参数化:

目的就是为了防止SQL注入

1 #encoding=utf-8

2

3 from MySQLdb import *

4

5 try:6

7 conn = connect(host='localhost',port=3306,user='root',passwd='mysql',db='python3',charset='utf8')8

9 cur =conn.cursor()10

11 sname = 'xxxx'

12

13 params =[sname]14

15 count = cur.execute('insert into students(sname) values(%s)',params)16

17 print(count)18

19 conn.commit()20

21 cur.close()22

23 conn.close()24

25 exceptException,e:26

27 print(e.message)

其他语句 Cursor对象的execute()方法,也可以用于执行create table等语句;

建议在开发之初就创建好数据库,不要在这里执行创建工作。

查询  查询一行数据使用Cursor对象的fetchone,查询所有数据使用fetchall()

1 #encoding=utf-8

2

3 from MySQLdb import *

4

5 try:6

7 conn =connect()8

9 sql = "select * from admin where id = %s"

10

11 cur =conn.cursor()12

13 cur.execute(sql,[5])14

15 res =cur.fetchone()16

17 print(res) 一个元祖18

19 cur.close()20

21 conn.close()22

23 exceptException,e:24

25 print(e.message)

封装 访问数据库代码:

1 classMysqlHelper(object):2

3 def __init__(self,host,port,db,user,passwd,charset='utf8'):4

5 self.host=host6

7 self.port=port8

9 self.db=db10

11 self.user=user12

13 self.passwd=passwd14

15 self.charset=charset16

17 defopen(self):18

19 self.conn=connect(host=self.host,port=self.port,db=self.db,user=self.user,passwd=self.passwd,charset=self.charset)20

21 self.cursor=self.conn.cursor()22

23 defclose(self):24

25 self.cursor.close()26

27 self.conn.close()28

29 defcud(self,sql,params):30

31 try:32

33 self.open()34

35 self.cursor.execute(sql,params)36

37 self.conn.commit()38

39 self.close()40

41 exceptException,e:42

43 print(e.message)44

45

46

47 defall(self,sql,params):48

49 try:50

51 self.open()52

53 self.cursor.execute(sql,params)54

55 result=self.cursor.fetchall()56

57 self.close()58

59 return result

登录案例:

密码加密:

1 importhashlib2

3 m =hashlib.md5()4

5 m.update("Nobody inspects")6

7 m.digest()8

9

10

11 importhashlib

13 s1=sha1()14

15 s1.update(pwd)16

17 pwd2=s1.hexdigest()

总结python与mysql交互

Connection 对象 尽量晚打开,尽量早关闭

connect(host,port,db,user,passwd,charset)

cursor()

close()

Cursor

execute()  如果执行insert update delete 语句时,需要commit()

commit()

fetchall()  返回二维元祖

fetchone()  返回一维元祖

close()

需要完成的内容:

封装数据库操作工具类

实现工具类完成crud操作

独立实现用户登录

实现用户注册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值