python访问mysql和redis

1. 修改mysql配置文件

修改bind-address=0.0.0.0(允许通过远程网络连接)

mysql配置.jpg

mysql配置2.jpg

2. 修改redis配置文件

修改bind-address=0.0.0.0(允许通过远程网络连接),设置密码qwe123
redis.jpg

redis1.jpg

Redis2.jpg

3. 下载访问包pymysql和redis

python包.jpg

4. 设置端口转发mysql和redis

端口转发.jpg

5. 导入包pymysql连接mysql

import pymysql
mysql_connect_dict={
    'host':'127.0.0.1',
    'port':3333,
    'user':'jianeng',
    'password':'qwe123',
    'db':'info',
    'charset':'utf8'
}
# 连接数据库
conn = pymysql.connect(**mysql_connect_dict)
# 指定以dict形式返回,默认以元祖形式
#conn = pymysql.connect(**mysql_connect_dict,cursorclass=pymysql.cursors.DictCursor)
print(conn)

6. 访问mysql

1. 查询记录

# 创建游标
cursor = conn.cursor()
# sql查询语句
sql = "show databases"
# 执行sql,得到行数
row = cursor.execute(sql);
print('%s条数据'%row)
# 返回一条记录(元祖形式)
one = cursor.fetchone();
print(one)
# 返回多条记录(元祖形式)
many = cursor.fetchmany(3)
print(many)
# 返回所有记录(元祖形式)
all = cursor.fetchall()
print(all)
#循环输出
for al in all:
    print(*al)

打印结果

6条数据
('information_schema',)
(('info',), ('mydb',), ('mysql',))
(('performance_schema',), ('sys',))
#循环结果
performance_schema
sys

2. 删除、创建表

   dr_table ='drop table `user`'
   # 删除表
   cursor.execute(dr_table)

   cr_table ='''create table if not exists user(
   id int primary key auto_increment,
   username varchar(20) not null,
   password varchar(20) not null 
          )
   '''
   # 创建表
   cursor.execute(cr_table)

3. 插入记录

   # 插入数据
   insertsql ='insert into user (username, password) VALUES (%s,%s)'
   cursor.execute(insertsql,('zhangsan','123'))
   # 插入多条(元祖形式)
   cursor.executemany(insertsql,[('王五','qwq'),('赵四','123'),('千8','123')])
   # 提交数据
   conn.commit();

   # sql查询语句
   selectsql = "select * from user "
   # 执行sql,得到行数
   row = cursor.execute(selectsql);
   print('返回%s条数据'%row)
   # 返回所有记录(元祖形式)
   select_all = cursor.fetchall();
   print("select=",select_all)

打印结果

   #返回4条数据
   select= ((1, 'zhangsan', '123'), (2, '王五', 'qwq'), (3, '赵四', '123'), (4, '千8', '123'))

4. 修改记录

   # 更新数据
   updatesql='update user set username = %s where id=%s'
   cursor.execute(updatesql,('张三','2'))
   # 更新多条(元祖形式)
   l = []
   for x in range(1, 4):
       l.append(('李%s'%x,str(x)))
   cursor.executemany(updatesql,l)
   # 提交数据
   conn.commit();

   # 执行sql,得到行数
   row = cursor.execute(selectsql);
   print('返回%s条数据'%row)
   # 返回所有记录(元祖形式)
   select_all = cursor.fetchall();
   print("select=",select_all)

打印结果

#返回4条数据
select= ((1, '李1', '123'), (2, '李2', 'qwq'), (3, '李3', '123'), (4, '千8', '123'))

5. 删除记录

# 删除语句
deletesql='delete from user where id=%s'
cursor.execute(deletesql, 1)
# 删除多条
cursor.executemany(deletesql,[(2,),(3,)])
# 提交数据
conn.commit()

打印结果

#返回1条数据
select= ((4, '千8', '123'),)

7. 访问redis

import redis
import sys
import time
# 得到默认编码
print(sys.getdefaultencoding())
# 连接redis
re = redis.Redis(host='127.0.0.1', password='qwe123',port=5555)

# 设置name值
re.set('name',15)
print(type(re.get('name')))#byte类型(utf8格式16进制字节码)
if isinstance(re.get('name'), bytes):
    # 字节码转换为字符串
    print(re.get('name').decode('utf8'))

re.set('name','祖国')
# decode默认为utf8格式解码
print(re.get('name').decode())

# 设置过期时间为3s
re.set('name','祖国',ex=3)
time.sleep(3)
#打印过期后ttl
print(re.ttl('name'))
# 设置多个属性
re.mset(name='佳能',age='18')
print(re.mget('name','age'))

# 设置递增
re.incr('age')
print(re.get('age'))
re.incr('age',10)
print(re.get('age'))
# 删除序列的值c
re.lrem('test_list','c',0)
# 设置hash 值
re.hmset('userkey',{'name':'jianeng','age':'18'})
print(re.hgetall('userkey'))

打印结果

utf-8
<class 'bytes'>
15
祖国
None
[b'xe4xbdxb3xe8x83xbd', b'18']
b'19'
b'29'
{b'name': b'jianeng', b'pwd': b'123', b'age': b'18'}

redis终端输出中文
redis连接.jpg

原文地址:https://www.cnblogs.com/xiao-apple36/p/8383760.html