- 安装pymysql:
pip3 install pymysql
- 通过练习来了解python和mysql的交互过程
#1.连接数据库
db = pymysql.Connect(
host = 'localhost', #本地的地址
user='root', #账号
passwd='********', #密码
db='srs', #数据库名称
port=3306, #端口
charset='utf8' #字符串编码
)
#2.获取游标 开辟一个缓冲区用于SQL语句的执行结果
cursor = db.cursor()
#3.执行sql语句,返回受影响的记录数
sql='select * from tbstudent'
cursor.execute(sql)
#4.获取结果
data = cursor.fetchell()
# 获取一个结果
data1=cursor.fetchone()
for i in data:
print('id:%s name:%s' % (i[0],i[1]))
print(data)
print(data1)
#5.关闭连接
db.close()
- 数据库的事物
- 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
- 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
- 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
- 持久性(Durability):一个事务一旦提交,他对数据库的修改应该永久保存在数据库中。
- 举例
用一个常用的“A账户向B账号汇钱”的例子来说明如何通过数据库事务保证数据的准确性和完整性。熟悉关系型数据库事务的都知道从帐号A到帐号B需要6个操作
1、从A账号中把余额读出来(500)。
2、对A账号做减法操作(500-100)。
3、把结果写回A账号中(400)。
4、从B账号中把余额读出来(500)。
5、对B账号做加法操作(500+100)。
6、把结果写回B账号中(600)。 - 通过python给数据库表里添加,删除数据
# -*- coding:utf-8 -*-
import pymysql
#1连接
db = pymysql.connect(
host='localhost',
user='root',
passwd='chenchen',
db='srs',
port=3306,
charset='utf8')
#2游标
cursor = db.cursor()
#3执行
try:
sql = '''insert into tbcourse values
(7777,'c25语言程序设计', 3 , '大神级讲师授课需要抢座')'''
cursor.execute(sql)
db.commit()
except:
#5回滚
db.rollback()
# try:
# sql = '''delete from tbstudent where stuid=1001;'''
# cursor.execute(sql)
# db.commit()
# except:
# db.rollback()
#data = cursor.fetchall()
#print(db)
#4关闭
db.close()
- 初识redis
- redis是一种高速高性能的内存数据库,存储的是键值对数据;
- 由于极高的存储和访问速度,redis常被用来作为数据缓存服务器;
- 另外redis是支持数据持久化的(即redis会自动将数据写入磁盘)
- redis安装 阿里云服务器 通过指令:yum install redis安装
- 支持的类型
- 字符串(单个value最大支持512M);
- 哈希hash(存储对象) ;
- 列表list ;
- 集合set ;
- 有序集合zset;
- 启动,运行
a) 启动redis-server
redis-cli
b) 启动 /bin/systemctl start redis.service
c) service start redis
进入配置文件(vim myredis.conf)
修改密码(查询 :/requireoass)大约在480行后加上密码一定要去掉(#)
修改地址 (查询 :/bind) 在60行左右 加上阿里云的私有ip地址,其他人就可以访问你
ps -aux | grep redis (查看redis的进程号)
kill + 进程号 (杀进程)
redis-server myredis.conf & (后台运行redis)
redis-cli (启动redis客户段)
自己连自己:
keys *
auth (输入密码)
ping一下自己,收到PONG的响应
访问指定IP:端口的redis服务器
redis-cli -h ip -p 端口
redis-cli -h 172.26.77.93 -p 6379
set p 1 设置 p的值为1
get p 获取 p的值
incr p 整数递增,默认值是0
decr p 整数减少
增
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到第20个字节,若20超过value长度,则截取第2个和后面所有的的
mget key3 key4 批量获取键