zoukankan      html  css  js  c++  java
  • python操作数据库

    一.python操作数据库

    这里主要介绍python3的一些操作方法.以下介绍python操作两种数据库,两种数据库部分好坏,只是看当时哪一种更适合所开发的系统框架.

    (一)python操作mysql数据库

    mysql中的数据是存在磁盘中,相对于redis速度要慢些.

    在python3中操作数据库,首先要安装pymysql,直接在命令行中敲pip3 install pymysql.

     1 import pymysql
     2 ip='211.149.147.233'
     3 port=3306
     4 passwd='111111'
     5 user='byz'
     6 db='byz'
     7 以下操作返回的是元组:
     8 conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,charset='utf8')
     9 # 建立数据库连接,指定数据库的数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集
    10 cur=conn.cursor(cursor=pymysql.cursors.DictCursor)
    11 # 在连接上建立一个游标
    12 sql='insert into py(id,name,sex) VALUE(6,"panyang","nv");'
    13 # sql语句,在表py中插入一条id=6,name=panyang,sex=nv的数据
    14 # sql2='select * from py'
    15 cur.execute(sql2)
    16 # 执行一条数据库语句并返回受影响行数.查询结果是一个元组
    17 
    18 print(cur.fetchall())   #获取所有的数据,是一个元组
    19 cur.scroll(0,mode='absolute')        # 移动游标
    20 print(cur.fetchone())  #一次获取一条
    21 conn.commit()   #要提交一下,inseert,update需要commit一下
    22 cur.close()   #数据库连接了就要关闭,有连接就有关闭
    23 conn.close()
    24 
    25 # 以下操作返回的是字典
    26 import pymysql
    27 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root',
    28                        passwd='123456', db='data', charset='utf8')
    29 # 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集
    30 cursor = conn.cursor()
    31 # 创建游标
    32 cursor = coon.cursor(cursor=pymysql.cursors.DictCursor)
    33 # 需要指定游标的类型,字典类型
    34 cursor.execute("select * from user;")
    35 # 执行SQL
    36 # 获取返回结果,这个时候返回结果是一个字典
    37 res = cursor.fetchone()
    38 # 返回一条数据,如果结果是多条的话
    39 print(res)
    40 res2 = cursor.fetchall()  # 所有的数据一起返回

    (二)python操作redis

     redis是nosql类型的数据库,数据存在内存中,读写速度较快.以下是redis中的一些操作:

     1 import redis,json
     2 ip='211.149.xxx.xx'
     3 port=6379
     4 db=7
     5 passwd=xxxxxx
     6 r=redis.Redis(host=ip,port=port,db=db,password=passwd)
     7 # 连接数据库
     8 # {"name:"panyang}
     9 r.set('myname','panyang')
    10 # 往redis里面存键值对
    11 # redis里面存的都是字符串
    12 name=r.get('myname')
    13 # redis里面获取到的诗句都是bytes类型的
    14 print(name.decode())
    15 # byte转成字符串.要使用.decode方法给他转成字符串才能继续操作
    16 new_name=json.loads(name.decode())
    17 #解码json格式
    18 print(type(new_name))
    19 
    20 r.setex('panyang','hahaha','20')   #创建一个数据,20s中就没有了,有失效时间
    21 # 可以设置key的失效时间
    22 print(r.get('ahha'))   #如果get一个不存在的值就返回none
    23 r.mset(panyang1='panyang1',panyang2='panyang2')
    24 # 批量set值的时候使用
    25 r.delete('name')   #删除某个key
    26 r.delete('k1','k2')#批量删除
    27 # print(r.keys('p*'))   #获取所有的key,byte类型,支持正则表达式
    28 # 上面的key的类型是string类型
    29 
    30 # 以下是哈希类型的key
    31 r.hset('user_session','panyang1','18')
    32 r.hset('myname:panyangyang','panyang','hahahahahahaha')
    33 # set哈希类型的值
    34 # print(r.hget('user_session','panyang'))
    35 # 获取指定的name里面的值
    36 # print(r.hgetall('user_session'))
    37 # 获取哈希类型里面所有的值
    38 # r.delete('key')
    39 # r.hdel('user_session','panyang')
    40 # r.set('user:panyang','hahaha')
  • 相关阅读:
    移动端rem切图
    在Vue中如何使用axios跨域访问数据
    如何使地图和柱状图联动
    dedecms 5.7 采集目标文章的发布时间 采集后变成当前本地时间
    PHP的内存限制 Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099 bytes) in
    Web前端性能优化——如何提高页面加载速度
    jquery中链式调用原理
    jdk1.6以后 对synchronized锁做了哪些优化
    Synchronized的锁优化
    分布式缓存
  • 原文地址:https://www.cnblogs.com/panpan0301/p/7124333.html
Copyright © 2011-2022 走看看