Python-列表生成式&三元表达式&操作mysql&md5加密

1.列表生成式

# 生成01,02到10
import os
# l1为普通写法
l1 = []
for i in range(1, 11):
    l1.append(str(i).zfill(2))

# l2为l1对应的列表生成式
l2 = [str(i).zfill(2) for i in range(1, 11)]

# l3和l4为生成文件,l4加了判断,注:判断只能加一个,可以不加
l3 = [open('%s.txt'%i,'w') for i in range(10)]
l4 = [os.mkdir(str(i)) for i in range(10) if i%2==0]

 

2.三元表达式

sex_tag = 0
if sex_tag:
    sex = ''
else:
    sex = ''
    
# 与上述代码块对应的三元表达式:
sex = '' if sex_tag else ''  # 条件满足,取前面的值,不满足取后面的值

 

3.操作mysql

# 操作数据库步骤:连接数据库--建立游标--执行sql--提交--关闭连接和游标
import pymysql # 导入mysql数据库模块
# 1.连接数据库
conn = pymysql.connect(host='XXX.XXX.XXX.XXX', # 数据路地址
                       port=XXXX, # 端口号
                       user='XXXX', # 用户名
                       password='XXXX', # 密码
                       db='XXXX', # 数据库名
                       charset='utf8', # 指定字符集
                       autocommit=True) # 自动提交
# port必须是数字,charset是utf8而不是utf-8,密码需是字符型,autocommit=True表示自动提交
cur = conn.cursor(pymysql.cursors.DictCursor)  # 2.建立游标(以管理员来理解);参数表示返回值以字典形式显示,可以不加
sql = "select * from app_myuser;"
sql1 = "insert into app_myuser(username, passwd, is_admin) values ('张三', '123123123', '822');"
cur.execute(sql)  # 3.执行sql语句
conn.commit()  # 4.提交;修改,删除,增加类操作需要提交才能生效;添加自动提交参数后,即不用再写提交语句
# result = cur.fetchall()  # 获取执行sql语句后的所有的结果
result1 = cur.fetchone() # 获取执行sql语句后的一条结果
# cur.description  # 表各字段的描述
cur.close()  # 5.关闭游标
conn.close()  # 5.断开数据库连接
# 将操作数据路步骤写成一个函数:
def op_mysql(info, sql: str):
    result = 'finish'
    conn = pymysql.connect(**info)  # 1.连接数据库
    cur = conn.cursor(pymysql.cursors.DictCursor)  # 2.建立游标
    cur.execute(sql)  # 3.执行sql
    if sql.strip().lower().startswith('select'):
        result = cur.fetchall()
    cur.close() # 4.关闭游标
    conn.close() # 4.关闭连接
    return result

mysql_info = {
    'host': 'XXX.XXX.XXX.XXX',
    'port': XXXX,
    'password': 'XXXX',
    'user': 'XXXX',
    'db': 'XXXX',
    'charset': 'utf8',
    'autocommit': True # 自动提交
}
sql = "select * from app_myuser;"
res = op_mysql(mysql_info, sql) # 调用函数

 

4.md5加密

# md5加密:加密不可逆,即无法解密
import hashlib # 导入hashlib模块
s = '123456'
m = hashlib.md5(s.encode())  # 加密;s.encode表示将s转化成bytes,不能s直接加密
result = m.hexdigest()  # 获取加密后的结果
print(result)
# 加密函数--加盐
def md5(s, salt='$!@#$12232'):  # salt为加盐(即给密码后加固定字符)
    s = str(str(s) + salt).encode()
    m = hashlib.md5(s)  # 加密
    return m.hexdigest() # 返回加密后的内容

md5('123','dgdsghad') # 调用加密函数

 

posted @ 2019-05-24 14:40  情绪疯子  阅读(607)  评论(0编辑  收藏  举报