zoukankan      html  css  js  c++  java
  • 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')
     
  • 相关阅读:
    Codefores 506A Mr. Kitayuta, the Treasure Hunter( DP && dfs )
    Goals ? Ideals ?
    HDU 5159 Card( 计数 期望 )
    HDU 1387 Team Queue( 单向链表 )
    HDU 1709 The Balance( DP )
    HDU 2152 Fruit( DP )
    HDU 1398 Square Coins(DP)
    HDU 5155 Harry And Magic Box( DP )
    HDU 3571 N-dimensional Sphere( 高斯消元+ 同余 )
    最大连续自序列
  • 原文地址:https://www.cnblogs.com/emilyliu/p/8983279.html
Copyright © 2011-2022 走看看