python访问mysql和redis数据库

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. 下载访问包pymysqlredis
python包.jpg
4. 设置端口转发mysqlredis
端口转发.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
  1. 删除、创建表
   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)
  1. 插入记录
   # 插入数据
   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'))
  1. 修改记录

    # 更新数据
    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'))
  1. 删除记录
# 删除语句
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

15
祖国
None
[b'\xe4\xbd\xb3\xe8\x83\xbd', b'18']
b'19'
b'29'
{b'name': b'jianeng', b'pwd': b'123', b'age': b'18'}

redis终端输出中文

redis连接.jpg

你可能感兴趣的:(python访问mysql和redis数据库)