学习笔记 python操作数据库

python操作数据库

一,python操作MySQL

1.PyMySQL介绍

是一个纯python的MySQL客户端库。它大多数API都兼容了mysqlclient, MySQLdb

  1. 支持:

    python 2.7 ,3.5+

    MySQL server  5.5 +
    
  2. 安装:

    pip install PyMySQL

连接前的准备工作:

设置端口映射 mysql服务默认监听3306

设置虚拟机3306端口映射物理机的3306端口 (这个决定了你能否在物理机连上你的mysql)

2.简单使用

import pymysql

# 套路,步骤
# 1. 创建连接
conn = pymysql.connect(
    host='127.0.0.1',           # 主机
    port=3306,                  # 端口
    user='develop',             # 用户名
    password='QWEqwe123',       # 密码
    db='tz',                    # 数据库
    charset='utf8'              # 字符编码
)

# 2. 创建游标
# 通过指定cursor的构造类,返回字典形式的结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 3. 执行sql语句
cursor.execute('select name as aa from student')

# 4.获取结果
res = cursor.fetchall()

print(res)

# 5.关闭游标
cursor.close()

# 6.关闭连接
conn.close()

3.使用pymysql进行查询

# 4.获取结果
res1 = cursor.fetchone()        # 获取一条  返回的是 一条数据 字典,元组
print('获取一条')
print(res1)
res2 = cursor.fetchmany(3)      # 获取多条  返回的是 多条数据  列表
print('获取三条')
print(res2)
res = cursor.fetchall()         # 获取多条
print('获取剩下所有的')

print(res)

res3 = cursor.fetchone()        # cursor 中的数据流,只能被读一次
print(res3)

4.使用pymysql进行增删改

import pymysql

# 套路,步骤
# 1. 创建连接
conn = pymysql.connect(
    host='127.0.0.1',           # 主机
    port=3306,                  # 端口
    user='develop',             # 用户名
    password='QWEqwe123',       # 密码
    db='tz',                    # 数据库
    charset='utf8',              # 字符编码
    cursorclass=pymysql.cursors.DictCursor
)

# 2. 创建游标
# 通过指定cursor的构造类,返回字典形式的结果
# pymysql 默认支持事务
try:
    with conn.cursor() as cursor:
        # 3.构建 sql语句  动态
        from_name = input('请输入转账账户名>>>>:')
        to_name = input('请输入转入账户名>>>>:')
        money = int(input('请输入转账金额>>>>>:'))
        # 直接拼接的方法不推荐,会发生sql注入
        sql1 = 'update account set money=money-%s where name=%s'

        sql2 = 'update account set money=money+%s where name=%s'
        # 4.执行sql语句
        cursor.execute(sql1, args=(money, from_name))
        cursor.execute(sql2, args=(money, to_name))
        # 5. 提交事务
        conn.commit()
except Exception as e:
    # 有异常
    print(e)
    # 6.处理异常,并回滚
    conn.rollback()         #  回滚
finally:
    # 7. 关闭连接
    conn.close()

二,python操作redis

1.redis-py介绍

redis-py是键值数据库redis的python实现接口。

两个大版本,2.x, 3.0 3.0有很多新特效,使用的时候需要做兼容处理

  1. 支持:

    3.0:

    • python2.7,python3.4+
  2. 安装

    pip install redis

    不要sudo安装,推荐安装在virtualenv

连接前的准备工作:

  1. 设置端口映射 redis服务默认监听6379

    设置虚拟机6379端口映射物理机的6379端口 (这个决定了你能否在物理机连上你的redis)

###2.redis-py 操作redis

python 操作redis的命令和命令行几乎一致,除了del,因为和关键字重名,用delete代替。

import redis

# 套路
# 1.建立连接
# conn = redis.Redis(
#     host='127.0.0.1',  # localhost
#     port=6379,
#     db=0
# )

conn = redis.StrictRedis(  # 兼容旧版本(推荐使用)
    host='127.0.0.1',  # localhost
    port=6379,
    db=0,
    decode_responses=True   # 设置为True返回的数据格式就是str类型
)

# key 的操作
res = conn.keys('*') #查看所有的key 
print(conn.delete('key')) #此因为del关键字冲突所以使用delete
print(coon.exists('key')) #检查是否存在  存在返回1,不存在返回0
coon.rename('oldkey', 'newkey') #改名
coon.expire ('key', seconds) #设置过期时间
coon.ttl ('key') #查看过期时间 不存在返回 -2,永久存在返回-1,否则返回整数秒 
coon.persist ('key') #移除过期时间

五大数据类型

  1. 字符串(string)
coon.set ('key', 'value')#设置数据'value') 没有key就添加,有key就修改
coon.get('key') #查看
append('key', 'value') #追加,追加到原有的数据后面,字符串的拼接
  1. 哈希表(hash)

    coon.hmset('hhhh', a_list) #添加新数据,一次性添加多值, 没有就创建,有就修改,a_list为一个字典
    
    coon.hget('key', 'field') #查看hash表中某个字段的值 
    
    coon.hgetall('key') #查询hash表中所有的字段和值
    
    coon.hvals('hhhh') #查看所有的value
    
    coon.hkeys('hhhh') #查看所有的field
    
    coon.hdel('hhhh', 'name') #删除某个字段
    
    coon.del('key') #删除整个hash表
    
  2. 列表(list)

    #添加数据
         coon.lpush('key', value) #头部添加(左边)value为一个字典
         coon.rpush('key', value) #尾部添加(右边)value为一个字典
    
    #查看数据
    coon.lrange('key', 0, -1) #查看数据:lrange key start end 获取列表指定范围的元素,包含start,和end,start从0开始
    coon.lindex('key', index(索引)) #查看指定索引数据
    coon.lset('key', index(索引),value) #修改指定索引数据
    
    #删除
      coon.lpop('key') #左删除
      coon.rpop('key') #右删除
     coon.llen('key') #获取列表长度:coon.llen('key')
    
  3. 集合(set)

    coon.sadd('key', member)  #添加数据,key存在则修改,不存在则创建member为一个字典
    coon.smemebers('key') #查询所有成员
    coon.srem('key', member) #指定删除,移除key中的一个或多个元素
    coon.spop('key') #随机删除
    
  4. 有序集合(sorted set)

    有序集合和集合一样也是string类型元素的集合,且不允许重复成员

    不同的是每个元素都会关联一个double类型的score。redis正是通过score来为集合中的成员进行从小到大的排序。

    有序集合的成员是唯一的,但是score却是可以重复的。score可以是整数,也可以是双精度的小数

    a_list = {score:member............}
    a_list = {
        1:5,
        2:55,
        3:56,
    }
    
    coon.zadd('key', a_list)#添加数据,将一个或者多个元组及其值加入到有序集合,key不存在则创建,a_list为一个字典
    
    coon.zrange('key', star, stop) #通过索引查看
    
    coon.zrangebyscore('key', 5, 56) #通过score查看,返回指定区socre间的集合元素
    
    coon.zscore('key',member) #返回成员的score
    
    coon.zcard('key') #返回集合长度
    
    coon.zrem('key', member [member1 ...]) #指定删除
    
    coon.zremrangebyrank('key', start stop) #通过索引删,移除有序集合key中,区间为索引start到stop的,包含start和stop在内。
    
    coon.zremrangebyscore('key', max min) #通过score删,移除有序集合key中,区间为score, min到max的的值,包含min和max在内
    

3.piplines

管道是redis类的子类, 它支持在一个请求中缓冲多个命令到服务器

pipe = conn.pipeline() #创建一个管道

pipe.keys('*')
pipe.set('name', '源氏') #缓存了两条命令

res = pipe.execute() #执行命令

print(res[0])
print(res[1]) #命令执行的结果
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值