python 关系型数据库链接使用--mysql

import pymysql # 引用mysql模块

# 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集

coon = pymysql.connect(host='118.24.3.40',user='jxz',password='123456',

port=3306,db='jxz',charset='utf8',autocommit=True)

cur = coon.cursor() #建立游标,

# 上面的操作,获取到的返回结果都是元组,如果想获取到的结果是一个字典类型的话,可以使用下面这样的操作

# cursor=coon.cursor(cursor=pymysql.cursors.DictCursor) #需要指定游标的类型,字典类型

# cur.execute('select * from nhy;') #执行sql语句,它只是帮你执行sql语句,不会给你返回数据

sql = 'insert into nhy (name,pwd) value ("xiaobai","1234567");'

cur.execute(sql)

# cur.execute('select * from nhy where name="xiaobai";')

coon.commit() #修改,删除,增加数据,需要commit;不然数据库没有保存。也可以在创建链接时加上“autocommit = Ture”,表示cur.execute(sql)执行完sql后自动提交

print(cur.fetchall()) #获取查询到的所有结果

# print(cur.fetchone()) #只获取一条

# print(cur.fetchmany(2)) #指定获取几条

# 获取最新自增ID

new_id=cursor.lastrowid

cur.close()#游标关闭

coon.close()#连接关闭

python redis数据库的str和hash

importredis

r=redis.Redis(host='127.0.0.1',port=6379,db=0)#指定连接redis的端口和ip以及哪个数据库

#  string类型  存储形式 (key:value,key2:value2)

r.set('name','value')#set string类型的值

r.setnx('name2','value')#设置的name的值,如果name不存在的时候才会设置

r.setex('name3','value',3)#设置的name的值,和超时时间,过了时间key就会自动失效

r.mset(k1='v1',k2='v2')#批量设置值

r.get('name')#获取值

print(r.mget('k1','k2'))#批量获取key

r.delete('name')#删除值

r.delete('k1','k2')#批量删除

#其他的方法

# print(r.keys('*info')) #获取到所有的key,‘*info’以info结尾的所有key

# print(r.exists('dashu_name')) #判断这个key是否存在

# r.flushdb() #可以清空当前数据库里面所有的key

# r.expire('session_crm',600) #指定key的失效时间

# print(r.ttl('session_crm')) #用来这个key的失效时间

# print(r.type('session_crm')) #看key的类型

#======下面是操作哈希类型的   存储形式(name:{key:value,key2:value2,...})

r.hset('hname','key','value')#set 哈希类型的值

r.hset('hname','key1','value2')#set 哈希类型的值

r.hsetnx('hname','key2','value23')#给name为hname设置key和value,和上面的不同的是key不存在的时候

#才会set

r.hmset('hname',{'k1':'v1','k2':'v2'})#批量设置哈希类型的key和value

r.hget('name','key')#获取哈希类型的值

print(r.hgetall('hname'))#获取这个name里所有的key和value

r.hdel('hname','key')#删除哈希类型的name里面指定的值

print(r.keys())#获取所有的key

res = r.hgetall('session_crm') #获取到hash类型里面所有的数据

a = {}

for k,v in res.items():

a[k.decode()] = v.decode()

print(a)

redis 获取的数据都是编码型的,所有需要的时候需要v.decode()将编码转为字符串

发送邮件

import yagmail

# 邮箱地址

user_name='heijame@163.com'

# 登录邮箱开启POP3/SMTP服务,设置邮箱的授权码,qq自动生成

passwd='qwe123'

# 若是QQ邮箱加上参数stmp_ssl=Ture;yagmail.SMTP(user=user_name, password=passwd, host='smtp.163.com',stmp_ssl=Ture)

mail = yagmail.SMTP(user=user_name, password=passwd, host='smtp.163.com')

# ‘to’:发送给某人,单引号包裹邮箱地址,也可以多人['23432411@qq.com','989787765@qq.com'];‘cc’抄送某人;‘subject’主题;‘contents’正文;attachment附件地址,文件路劲前加r

# r'C:\app\www\123.txt'

mail.send(to='511402865@qq.com', subject='导出excel', contents='zuoye', attachments=r'D:\Documents\coding\spz-python\day6\student_table.xls')