Python关联数据库、Redis认识及使用

SQL

  • cascade(级联) 主表更新与之关联的表也会更新
  • set null 主表更新与之关联的表对应的外键会设置为null
  • if(字段, exp1, exp2) 如果是字段内容为真,输出exp1, 否则返回exp2
  • having 后面可以加前面的函数进行筛选
  • select sid as ‘学号’, avg(score) as a from tbsc group by(sid) having a >= 90;
  • longblob 可以存储任意长度的2进制字符
  • varchar(a) 可以设置a个字符,这里汉字和英文字母占位都是一个字符
  • between and
  • select stuname, stusex, stubirth from tbstudent where stubirth between ‘1980-1-1’ and ‘1989-12-31’;

MySQL—— 事务ACID

  • 原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做
  • 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

python 连接数据库

  • pip install PyMySQL
  • pip list 看pip里有哪些东西
  • pip freeze 看安装过哪些东西
# -*- coding:utf-8 -*-
import pymysql
#先连接到数据库
db = pymysql.Connect(host='localhost', 
    user='root', 
    passwd='123456', 
    db='select_cl', 
    port=3306, 
    charset='utf8')
#3.获取游标-->开辟一个缓存区,用于存放sql语句执行的结果
cursor = db.cursor()

#4.执行sql
sql='select * from tbstudent;'
cursor.execute(sql)

#5.获取所有结果
data = cursor.fetchall()

#6.获取一个结果
data1 = cursor.fetchone()

for i in data1:
    print('id:%s name:%s' %(i[0], i[1]))


#2 关闭连接
db.close()
# -*- coding:utf-8 -*-


import pymysql

db = pymysql.connect(
    host='localhost',
    user='root',
    passwd='123456',
    db='select_cl',
    port=3306,
    charset='utf8')

cursor = db.cursor()

try:
    sql = '''insert into tbcourse values
    (7778, 'C语言程序设计', 3, '大神级讲师授课需要抢座')'''
    cursor.execute(sql)
    #提交,体现了数据库的的原子性,除了查询外其他的的操作都需要提交
    db.commit()
except:
    # 回滚
    db.rollback()

db.close()

Redis

  • redis是一个key-value存储系统。
启动
  • 第一种
  • 启动redis-server
  • redis-cli
  • 第二种
  • /bin/systemctl start redis.service
  • 第三种
  • service start redis
  • 后台启动
  • redis-server &
修改密码
  • 找到requirepass 大约在480行后加上密码一定要去掉#
修改地址
  • 找到bind 大约在61行 后面加上ip 这样其他人就可以通过ip访问到你
访问其他人的redis
  • redis-cli -h ip -p 端口
redis 五大类型
  • string类型 hash list set zset
  • set p 1 设置 p的值为1
  • get p 获取p的值
  • incr a 整数递增 默认值为0,每次用incr
  • decr 整数递减
"""
增
set mykey "test"   为键设置新值,并覆盖原有值
getset mycounter 0   设置值,取值同时进行
setex mykey 10 "hello"  设置指定 Key 的过期时间为10秒,在存活时间可以获取value
setnx mykey "hello"   若该键不存在,则为键设置新值
mset key3 "stephen" key4 "liu"  批量设置键

删
del mykey  删除已有键

改
append mykey "hello"  若该键并不存在,返回当前 Value 的长度
              该键已经存在,返回追加后 Value的长度
incr mykey   值增加1,若该key不存在,创建key,初始值设为0,增加后结果为1
decrby  mykey  5   值减少5
setrange mykey 20 dd   把第21和22个字节,替换为dd, 超过value长度,自动补0

查  
exists mykey     判断该键是否存在,存在返回 1,否则返回0
get mykey    获取Key对应的value
strlen mykey  获取指定 Key 的字符长度
ttl mykey     查看一下指定 Key 的剩余存活时间(秒数)
getrange mykey 1 20  获取第2到第21个字节,若20超过value长度,则截取第2个和后面所有的的
mget key3 key4   批量获取键
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值