python操作redis和MySQL数据库需要先分别导入模块:redis、pymysql
如果这个库没有导入成功,则需要安装,用pip3 install pymysql,redis的库类似;两个数据库的基本命令我们也必须知道,数据库
的命令最好是在Linux里执行一下,看是否能够执行!以此来保证该代码不会出错,添加表或数据之后要记得相应的删除...
要用python链接数据库,就必须要更改数据库的配置文件。
更改mysql的配置文件 mysqld.cnf ,输入命令:cd /etc/mysql/mysql.conf.d 进入该文件夹
再输入命令:sudo vim mysqld.cnf,修改成下图的样子之后,保存退出!
再输入命令:sudo service mysql restart 重启mysql服务
更改redis的配置文件 redis.conf,输入命令:cd /etc/redis sudo vim redis.conf sudo service redis restart
配置号python和数据库之后就可以用python来操作数据库了!
python操作MySQL数据库
用pycharm连接MySQL数据库的命令:conn = pymysql.connect(host='127.0.0.1', port=33333, user='dcxm_1',
password='dcxm0608', db='massege'),port是转发的端口号,后面依次是用户名,密码,数据库名!也可以用字典的形式将参数传进
去,代码如下图所示:
python操作数据库MySQL是要基于一个游标的东西,可以将它理解为python与数据库之间的一个快递员:
返回了一个影响列6,如何拿到数据呢,可以使用下面的命令:cursor.fetchone(),使用该命令每次只拿一个数据!
使用cursor.fetchmany(),可以指定拿到几条数据!注意数据都是以元组返回是的。
使用上面两个命令之后,剩下的内容任然存于游标之中,所以我们可以使用cursor.fetchall()取出所有的数据!注意如果要一次性将
所有数据全部取出则要将本次命令在一开始就执行!
建表:
对该表进行增删查改:
删除一些数据:
查找表中的数据:
如果想取得所有的值建议用execute命令,然后用fetchall命令全部取出...
联合查询:
在python中先将MySQL语句用一个字符串表示,然后再使用execute命令:
我们可以发现,python操作MySQL数据库命令很简单,充分利用字符串格式化,每个命令不同之处在于MySQL本身的命令!
python操作redis数据库
先用pycharm与redis建立连接:如果你的redis设置了密码,则在端口号port后边要加一个参数password
最后两行代码是测试redis是否连上,因为如果直接print red的话是不会报错的,如果没有连上,它任然成功!
Linux里例外一种连接方式:
1 import redis 2 3 # 连接数据库,创建SrictRedis对象,与redis服务器建立连接 4 # sr = redis.StrictRedis(host="localhost", port=6379, db=0) 5 sr = redis.StrictRedis() 6 result = sr.set("name", "dan") 7 print(result) 8 9 response = sr.get("name") 10 print(response) 11 12 sr.set("name", "伍佰danser") 13 response = sr.get("name") 14 response.decode("utf8") 15 print(response.decode("utf8")) 16 17 # 删除数据 18 print(sr.delete("name"), sr.delete("name")) 19 # 上面已经介绍的连接: 20 s = redis.Redis(host="127.0.0.1", port=6379) 21 print(s.set("id", 6379))
运行结果如下:
连接redis的时候要注意编码问题,我们在使用redis的时候如果要输出中文,返回的都是十六进制格式的!因为我们的redis数据库
是内存级数据库,所以保存0-1型数据是最快的,默认是utf-8编码的字节码
所以我们在用python取数据的时候最后要解码!
python操作redis的大部分命令是和redis的命令是一样的,只有一些是不同...
ttl 和 expire 命令:ttl不难看负数,只能看已经设置了expire时间的:
mset incr incrby decr decrby
在python连接redis的操作中incr方法可以代替incrby方法,只需要如图所示在后边加一个数;decr类似。
lrem 需要将删除的个数放到后边:
先建立一个列表做试验:
删除最后一个1:
redis中的结果如下:
全部删除某个元素: red.lrem('my_list', 'd', 0) 这里的0或者其他数字都可以不加引号
hmset 对哈希的操作:
除此之外其他操作和原生命令一样!
订阅与发布
订阅:
在一个python文件中连接redis,然后使用命令:red.publish('dan','hello')发布,第一个参数为频道
在其他python文件中连接redis,然后订阅dan频道:
设置订阅: p_s = red.pubsub() #p_s 为定义的对象
订阅频道:p_s.subscribe('dan')
while True:
#开始订阅
print(p_s.parse_response()) #打印收到的信息
来源:https://www.cnblogs.com/dan-baishucaizi/p/8377967.html