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') # 调用加密函数