• python学习(二十一)加密模块及数据库操作


    1、MD5加密

    不能直接对字符串加密,要先把字符串转换为bytes类型

    import hashlib
    m=hashlib.md5()
    password='liujia test'
    print(password.encode())  #把字符串转换成bytes类型
    m.update(password.encode()) #不能直接对字符串加密,要先把字符串转换成bytes类型
    print(m.hexdigest())

    定义函数,做加密

    def my_md5(str):
        new_str=str.encode()#把字符串转换成bytes类型
        #new_str=b'%s'%str #把字符串转换成bytes类型
        m=hashlib.md5()  #实例化MD5对象
        m.update(new_str)  #加密
        return m.hexdigest()  #获取结果返回
    print(my_md5('jsjs'))

    2、其他加密方式

    import hashlib
    m=hashlib.sha224()  #各种加密方式,用法一样,只是加密出来的密文不一样
    m.update('adasdjks'.encode())
    print(m.hexdigest())

    3、操作数据库

    数据库操作步骤:
    1)连接数据库 账号,密码,IP,端口号,数据库

    2)建立游标
    3)执行sql
    4)获取结果
    5)关闭游标
    6)连接关闭

    查询数据库数据:

    import pymysql
    coon=pymysql.connect(
        host='xxx.xx.x.x',user='jxz',password='123456',
        port=3306,db='jxz',charset='utf8'
    #port必须是int类型,charset必须写utf8
    )
    cur=coon.cursor() #建立游标
    cur.execute('select * from stu;')
    res=cur.fetchall()#获取所有返回的结果
    print(res)
    cur.close()  #关闭游标
    coon.close() #关闭连接

    插入数据:

    import pymysql
    coon=pymysql.connect(
        host='xxxx',user='jxz',password='123456',
        port=3306,db='jxz',charset='utf8'
    #port必须是int类型,charset必须写utf8
    )
    cur=coon.cursor() #建立游标
    cur.execute('insert into stu(id,name,sex) values(12,"liujia","测试")')
    coon.commit()
    res=cur.fetchall()#获取所有返回的结果
    print(res)
    cur.close()  #关闭游标
    coon.close() #关闭连接

    4、函数定义数据库操作

    def my_db(host,user,password,db,sql,port=3306,charset='utf8'):
        import pymysql
        coon=pymysql.connect(user=user,
                             host=host,
                             paaaword=password,
                             db=db,
                             charset=charset,
                             port=port
        )
        cur=coon.cursor()
        cur.execute(sql)
        if sql.strip()[:6].upper()=='SELECT':
            res=cur.fetchall()
        else:
            coon.commit()
            res='ok'
        cur.close()
        coon.close()
        return res

    5、fetchall() 与fetchone()用法与区别

    fetchall() 获取到sql执行的全部结果,把数据库里的每一行放到一个list里面
    [['1','2','3']]
    fetchone 获取到这个sql执行的一条结果,它返回就只是一条数据
    如果sql语句执行的结果是多条,就用fetchall
    如果确定执行结果是一条,就用fetchone

    6、建立游标指定游标类型,结果为字典类型

    def my_db(sql,port=3306,charset='utf8'):
        import pymysql
        host,user,password,db = '118.24.3.40', 'jxz','123456', 'jxz'
        coon=pymysql.connect(user=user,
                             host=host,
                             password=password,
                             db=db,
                             charset=charset,
                             port=port)
        cur=coon.cursor(cursor=pymysql.cursors.DictCursor)
        #建立游标的时候指定了游标类型,返回的就是一个字典
        cur.execute(sql)
        if sql.strip()[:6].upper()=='SELECT':
            res=cur.fetchall()
            print(res)
        else:
            coon.commit()
            res='ok'
        cur.close()
        coon.close()
        return res
    my_db('select * from stu')

    7、description()用法

    获取数据库表字典的具体描述,如数据库表stu中有三个字段,想知道这三个字段的具体描述,如字段类型,长度等

    8、取数据库表头字段

    def my_db(sql,port=3306,charset='utf8'):
        import pymysql
        host,user,password,db = 'xxx', 'jxz','123456', 'jxz'
        coon=pymysql.connect(user=user,
                             host=host,
                             password=password,
                             db=db,
                             charset=charset,
                             port=port)
        cur=coon.cursor(cursor=pymysql.cursors.DictCursor)
        #建立游标的时候指定了游标类型,返回的就是一个字典
        cur.execute(sql)
        if sql.strip()[:6].upper()=='SELECT':
            fileds=[filed[0] for filed in cur.description]  #相当于上面三句
            print(fileds)
        else:
            coon.commit()
            res='ok'
        cur.close()
        coon.close()
        return res
    my_db('select * from stu')
     
  • 相关阅读:
    android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
    Web前端框架与类库的思考
    android应用开发(十):widget的使用
    响应式WEB设计的9项基本原则
    谈一下关于CQRS架构如何实现高性能
    迪杰斯特拉算法——PAT 1003
    Android开发-SQLite数据库
    寻找水王(2)
    PAT-1003
    PAT-1002
  • 原文地址:https://www.cnblogs.com/emilyliu/p/8983279.html
Copyright © 2020-2023  润新知