首页 > 技术文章 > python -- 操作数据库

wanghl-3115 2017-06-29 15:43 原文

1.操作mysql

  python3操作mysql,需要导入第三方模块【pymysql】,使用【pip install pymysql】即可安装,python2中需要导入MySQLdb模块,

  以python3为例予以说明:

 1 import pymysql
 2 ip='192.168.10.65'
 3 port=3306
 4 passwd='root'
 5 user='root'
 6 db='test'
 7 
 8 #建立数据库连接
 9 conn = pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db
10                        ,charset='utf8')
11 #建立游标
12 cur= conn.cursor(cursor=pymysql.cursors.DictCursor)
13 sql = 'insert into nhy(id,name,sex) VALUE (5,"pjb","女");'
14 sql2 = 'select * from nhy;'
15 #执行sql
16 cur.execute(sql2)
17 #获取所有数据
18 print(cur.fetchall())
19 #获取一行数据
20 print(cur.fetchone())
21 #以绝对位置获取数据
22 cur.scroll(5,mode='absolute')
23 #以相对位置获取数据
24 cur.scroll(5,mode='relative')
25 #提交,insert、delete、update必须提交才能生效
26 conn.commit()
27 #关闭游标
28 cur.close()
29 #关闭连接
30 conn.close()

  以下是一个操作mysql数据库的函数,记录下,方便以后使用时直接取用

 1 import pymysql
 2 
 3 def op_mysql(host,user,passwd,db,sql,port=3306,charset='utf8'):
 4     conn = pymysql.connect(
 5         host=host,user=user,passwd=passwd,port=port,db=db,charset=charset
 6     )
 7     cur = conn.cursor(pymysql.cursors.DictCursor)    #以字典形式获取数据
 8     cur.execute(sql)
 9     if sql.startswith('select'):
10         res = cur.fetchall()
11     else:
12         conn.commit()
13         res = 88
14     cur.close()
15     conn.close()
16     return res

2. 操作redis

  redis是属于nosql数据库,即非关系型数据库,数据都存放于内存中,能够很快速的读写

  python3操作redis数据库, 需要安装【redis】模块,使用【pip install redis】安装即可

 1 import redis
 2 ip = '192.168.10.19'
 3 port = 6379
 4 db = 15
 5 passwd = '123456'
 6 #连接redis
 7 r = redis.Redis(host=ip,port=port,db=db,password=passwd)
 8 
 9 # set 是新增字符串类型,若新增的数据存在,则更新值
10 r.set('name',[1,2,3,4])
11 #可以设置key的失效时间
12 r.setex('a','111',30)
13 #批量设置值
14 r.mset(k1='v1',k2='v2')
15 
16 #get查询k的值,若key不存在就返回None
17 name = r.get('name')
18 print(r.get('name'))
19 # redis里面获取到的数据都是bytes类型的,需要是用.decode方法给它转成字符串才能继续操作
20 print(name.decode())
21 #批量获取key
22 print(r.mget('k1','k2'))
23 
24 #删除某个key
25 r.delete('name')
26 # 批量删除
27 r.delete('k1', 'k2')
28 
29 #操作哈希类型
30 r.hset('hname', 'key', 'value')#set 哈希类型的值
31 r.hsetnx('hname','key2','value23')#给name为hname设置key和value,和上面的不同的是key不存在的时候才会set
32 r.hmset('hname',{'k1':'v1','k2':'v2'})#批量设置哈希类型的key和value
33 r.hget('name', 'key')#获取哈希类型的值
34 print(r.hgetall('hname'))#获取这个name里所有的key和value
35 r.hdel('hname','key')#删除哈希类型的name里面指定的值
36 print(r.keys())#获取所有的key
37 
38 #新建文件夹
39 r.set('user:niuhanyang','haha')    #文件夹名user
40 r.hset('session:byz_sys','chendonggua','12345')     #文件夹名session

   以下是使用set方式的一个简单的函数,记录下,方便以后使用时直接取用

 1 import redis
 2 def op_redis(host,passwd,k,v=False,time=30,db=15,port=6379):
 3     r = redis.Redis(host=host,password=passwd,db=db,port=port)
 4     if v:
 5         r.setex(k,v,time)
 6         res = 88
 7     else:
 8         res = r.get(k)
 9         if res:
10             res = res.decode()
11         else:
12             res = ""
13     return res

 

推荐阅读