使用Python操作数据库

一、linux系统中数据库的使用

安装数据库:yum install mariadb-server mariadb -y。其中mariadb-server表示服务端,mariadb表示客户端,默认连接本机的3306端口。

检查数据库是否安装好了:rpm -qa|grep mariadb。其中rpm -qa命令是将所有已经安装的软件包列出来,grep命令是将mariadb相关的包过滤出来。

启动mariadb服务:systemctl start mariadb。

检查mariadb服务是否启动:ps -ef|grep mariadb。其中ps -ef命令为显示进程的详细信息,grep命令将mariadb进程过滤出来。

设置开机自启mariadb服务:systemctl enable mariadb。

通过systemctl管理mariadb服务:systemctl start/stop/restart mariadb。

连接数据库:mysql

指定用户登录数据库:mysql -u sumeng -p,指定sumeng用户登录数据库

mysql语句:

建库:create database sc;

建表:

create table StuInfo(

        id int primary key auto_increment,

        name varchar(128),

        age int8,

        address varchar(256)

)default charset utf8;

向表中插入数据:insert into StuInfo(name,age,address) values("sc",8,"长沙");

查看有哪些数据库:show databases;

使用指定的sc数据库:use sc;

查看当前数据库里面有哪些表:show tables;

查看指定表StuInfo的表结构:desc StuInfo;

查询表中的所有内容:select * from StuInfo (\G);后面接\G表示每行竖向表示

按条件查询表中的内容,where后面接条件:select * from StuInfo where address="长沙";——查询address为长沙的全部信息

删除表中指定条件的内容:delete from StuInfo where address="重庆";——删除address为重庆的信息

按条件修改表中的内容:update StuInfo set age=10 where name="sc";——将name为sc的age更改为10

授权给任何主机登录上来的指定sc用户所有库所有表的所有权限(授权并创建sc用户,密码为sc123789):grant all privileges on *.* to 'sc'@'%' identified by 'sc123789';

刷新权限:flush privileges;

二、使用Python连接数据库

Python中使用pymysql连接数据库,在Python中安装pymysql库:pip install pymysql

import pymysql

# 创建数据库连接--客户端
db = pymysql.connect(host='192.168.15.146',    #要连接的主机地址
                     user='sc',                #登录数据库的用户
                     password='sc123789',      #密码
                     databases='sc'            #要连接的数据库
)

# 创建游标对象
cursor = db.cursor()

# 使用execute()方法执行sql语句
cursor.execute("SELECT * FROM StuInfo")

# 使用fetchone()方法获取单条数据.
data1 = cursor.fetchone()
# 使用fetchall()获取全部数据
data2 = cursor.fetchall()

print(f"{data1}")
print(f"{data2}")

# 关闭数据库连接
db.close()

三、linux系统中redis的使用

redis是一种key-value存储系统,属于非关系型数据库。redis主要用于做数据缓存,一些大型网站的应用和数据库之间的一层就是redis。

redis持久化策略:RDB快照的持久化方式(默认);AOF日志--将修改的每条指令增量记录到文件中,先写入操作系统缓存,每隔一段时间同步到磁盘。

安装:yum install redis -y。

修改配置文件/etc/redis.conf中的绑定(绑定本机的所有ip):bind 0.0.0.0。

启动/重启/关闭redis服务:systemctl start/restart/stop redis。

redis服务默认连接本机的6379端口。

redis常用语句:

进入redis:redis-cli

数据库的切换(一共有16个库,0-15):select index

存储:set key value

查询:get key

查看符合条件的所有key:keys pattern

存列表,将一个或多个值插入列表头部:lpush key value

查看列表中的值:lrange key start stop

哈希表字段的赋值:hset key field value

哈希表字段的获取:hget key field

四、Python操控redis

安装操作redis的库:pip install redis

例题:从键盘接受要查询的学生id,通过输入的学生id,找到相应的学生id信息 。先在Redis里面查找,Redis找不到再去mysql,找到之后返回信息,并且写入Redis以便下次查询。

import pymysql
import redis

stu_id = input("请输入你想查询的学生id:")

# 连接redis
# db指定数据库,默认为0号库
# 从redis数据库中取出的数据默认为字节类型,加上decode_responses=True会将取出的数据默认为字符串类型
r = redis.Redis(host='192.168.15.146', port=6379, db=2, decode_responses=True)

# 连接数据库
db = pymysql.connect(host='192.168.15.146',
                     user='sc',
                     password='sc123789',
                     database='sc')

# redis中存一个hash集合数据
# 查找是否存在所要查找的key,不存在返回None
if r.hkeys(stu_id):
    print("通过redis查找")
    print(f"学生姓名为:{r.hget(stu_id, 'name')}")
    print(f"学生年龄为:{r.hget(stu_id, 'age')}")
    print(f"学生地址为:{r.hget(stu_id, 'address')}")
else:
    print("通过mysql查询")
    cursor = db.cursor()
    cursor.execute(f"select * from StuInfo where id={stu_id}")
    data = cursor.fetchone()
    if data:
        print(f"学生姓名为:{data[1]}")
        print(f"学生年龄为:{data[2]}")
        print(f"学生地址为:{data[3]}")
        # 将从mysql中查找到的数据存入redis
        r.hset(stu_id, 'name', data[1])
        r.hset(stu_id, 'age', data[2])
        r.hset(stu_id, 'address', data[3])
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值