python的日期+excel+mysql+sqlAlchemy+mongo+logging

目录

  • 日期-天
  • 正则-三种
  • pandas 生成 excel表
  • 引入另一个python文件
  • pymysql数据库
  • SQLAlchemy
  • pymongo

一:日期

from datetime import datetime
from datetime import timedelta

curr_time=datetime.now() # 现在的时间
today=(curr_time.strftime("%Y-%m-%d"))# 调用strftime方法就是对时间进行格式化
yesterday=(curr_time - timedelta(days=1)).strftime("%Y-%m-%d")
tomorrow=(curr_time + timedelta(days=1)).strftime("%Y-%m-%d")
week_ago = (curr_time + timedelta(weeks=1)).strftime("%Y-%m-%d")

print("今天日期:",today)
print("昨天日期:",yesterday)
print("明天日期:",tomorrow)
print("下周日期:",week_ago)

在这里插入图片描述

二:正则

1:三种

# 正则
# 匹配,不存在为none
a_pipei = re.match(r'^ab','abdhfikre')[0]
a_pipein_null = re.match(r'^ab','11abdhfikre')

a_fidall = re.findall(r'/(\d+).htm','baidu/12344.htm')[0]
# sub替换
a_huan = re.sub(r"(/\d+)",'/naliduo66', 'baidu.com/123/home/456/ll789.html')

在这里插入图片描述
2:取值group

 text = '<img src="//www.baidu.com/img/flexible/logo/pc/result.png" title="到百度首页">'
 a = re.match(r'<img src="(\S+)"', text)
 print(a[0])
 print(a.group(1))            #只取出url链接,()里面的

在这里插入图片描述



三:生成Excel

一:pandas
1:dataframe对象- (列表+表头)

import pandas
stu = [['小A','11','玩'],['小c','22','跑'],['小d','33','跳']]
pf = pandas.DataFrame(stu)    #dataframe对象
#表头名称
pf.columns = ['姓名', '年龄', '技能']
# 生成Excel表格
file_path = pandas.ExcelWriter('店铺名称.xlsx')
pf.to_excel(file_path, sheet_name='sheet1', encoding='utf-8', index=False)
# 保存表格
file_path.save()

注:
dateFrame是行列对象
pf.columns:列
to_excel:生成excel
index=false :左侧一行索引不显示

2:字典数据

import pandas
student = [{"姓名": "小A", "年龄": "21", "职业": "战士"},]
pf = pandas.DataFrame(student)    #dataframe对象
#loc[]添加
pf.loc['5'] = {"姓名": "小方", "年龄": "22", "职业": "辅助"}      
pf.loc['6'] = {"姓名": "小lam", "年龄": "33", "职业": "打野"}
# 生成Excel表格
file_path = pandas.ExcelWriter('店铺名称.xlsx')
pf.to_excel(file_path, sheet_name='sheet1', encoding='utf-8', index=False)
# 保存表格
file_path.save()
print(pf.index)    #行与列
print(pf.columns)

行与列的结果:
在这里插入图片描述

二:xlwt生成Excel (老)

import xlwt
workbook = xlwt.Workbook(encoding='utf-8') #excel对象
worksheet = workbook.add_sheet('sycm1')    #创建shee表
worksheet.write(0,0,'hello python')         #写入内容
workbook.save('sycm.xls')                  #保存excel表

四:引入另一个python文件

import sys
sys.path.append(r'D:\g\Spider')
from env import env    #env  no .py
print(sys.path)

在这里插入图片描述

五:mysql数据库

import pymysql

#1:连接数据库
conn = pymysql.connect(host='10', user='', password='',database='',port=3306)  
biao = conn.cursor()        #2:获取游标

#一:查询
sql = 'select * from course'          
biao.execute(sql)           #3:游标查询sql语句 
#fetchone(), fetchmany()    #4:获取数据!!!!!
data_all = biao.fetchall()
for item in data_all:
    print(item)
conn.close()                 #5:连接断开   

#二:插入
sql1 = 'insert into course(cid, cname, tid) values("04","历史","04")'              
biao.execute(sql1)  
conn.commit()                #提交更改(增加,修改)
conn.close()                  

在这里插入图片描述


六:SQLAlchemy

一:导入模块

import sqlalchemy
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker

二:连接sql, 建立对象映射

#调用方法
def main():
    setsql(username='', password='', db_host='10', db_port=3306, db_name='sys', charset='utf8')

def setsql(username, password, db_host, db_port, db_name, charset):
    #sql的地址
    sql_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset={}'.format(username, password, db_host, db_port, db_name, charset)
    engine = sqlalchemy.create_engine(sql_url)   #1:链接sql
    session = sessionmaker(bind=engine)()        #2:创建session进行增删改查

    Base = automap_base()                        #3:两步,表数据与对象映射
    Base.prepare(engine, reflect=True)
                  
    table = Base.classes['course']               #4:Base.classes.tablename为表名 
                                                 #  !!表名!!查找的精华                                        

  #print(Base.classes.keys())     #所有的表名

三:session
实现增删改查
session.query(table).filter() 查询
session.add() 增加

    #1:结果用for遍历 !!!
    #2:增删改需要session.commit()提交修改
    #一:查找 query()         
    datalist = session.query(table).order_by(table.tid.desc()).all()
    for i in datalist:
        print(i.cid, i.course, i.tid)
    datalist = session.query(table).filter(table.course=='语文')
    for i in datalist:
        print(i.cid, i.course, i.tid)

    #二:插入数据 add()或add_all([])
     insertdata = table(cid='05', course='高数',tid='07')
     session.add(insertdata)
     session.add(insertdata_22)
     session.flush()               #缓存多个,commit提交一次
     session.commit()
    
    #三:修改数据 update()
    session.query(table).filter(table.cid=='05').update({'course':'政治'})
    session.commit()
    
    #四:原始sql
    data = session.execute('select * from course').fetchall()
    print(data)
    
    #关闭
    session.close()

在这里插入图片描述


七:pyMongo

参考文章:
https://blog.csdn.net/DanielJackZ/article/details/123749384

1:导入模块

import pymongo

2:链接mongo

def setMongo(host, port, username, password):
    url='mongodb://127.0.0.1:27017'
    # mongoDB = pymongo.MongoClient(url)              #1:链接url(两种)
    mongoDB = pymongo.MongoClient(host=host, port=port)
    db = mongoDB['zz_web']                            #2:打开数据库

    if username and password:                         #3:存在密码
        db.authenticate(username, password,'admin')

    collection = db['A.ec']                           #4:连接表

在这里插入图片描述

3:collection增删改查
①:查询

 #!!!用for循环输出结果
    #1:查询数据
    result = collection.find({'name':'zhangsan'}).skip(2).limit()
    result = collection.find({'name':'zhangsan'}).sort('age', pymongo.DESCENDING)  #排序
    result = collection.find({}, {'_id':False})                            #不显示_id
    result = collection.find({'name':{'$in':['zhangsan','zhaoqian']}})     #筛选
    result = collection.find({'name':{'$regex':'sa'}})                     #包含某个字符串
    for item in result:
        print(item)
    

②:更新数据

#2:插入数据, 一或多
collection.insert_one({'name':'zhaoqian','hobby':'read book'})
collection.insert_many([])

#3:更新数据
result = collection.update_many({'name':'wangwu'},{'$set':{'age':10,'look':'sse'}})     #更新属性
result = collection.update_many({'name':'wangwu'},{'$set':{'hobby.city':'北京'}})       #更新下一级

#4:删除
result = collection.delete_many({'name':'zhaoqian'})

#关闭连接
mongoDB.close()

在这里插入图片描述


二:搭建mongo本地服务器
参考文章:

https://blog.csdn.net/weixin_43405300/article/details/120017878?
http://runxinzhi.com/pengfei-nie-p-14446901.html

八:Logging

参考文章:
https://blog.csdn.net/u011412768/article/details/110311835

1:知识
①:debug、info、warning、error、critical
②:logging.StreamHandler : 控制台输出
Logger.addHandler() : 添加对象
③:name 为getLogger(name)

一:settings.py中设置
#settings.py中

#控制台输出,日志的级别
LOG_LEVEL ='DEBUG'
#日志保存为文件
LOG_FILE='debug.log'
二:编程

1:导入模块

import logging

2:通过logger、handler和formatter三种组件组合实现log同时打印和保存

def getlog():
    logger = logging.getLogger('name.log')  # 1:创建日志器
    logger.setLevel(logging.DEBUG)          # 2:该日志器的级别及格式
    f1 = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

    #控制台
    terminal = logging.StreamHandler()  # 3:控制台
    terminal.setFormatter(f1)           # 4:内容格式
    logger.addHandler(terminal)         # 5:日志 ,绑定,控制台

    #保存文件
    fh = logging.FileHandler("test.log", encoding='utf8')
    fh.setFormatter(f1)
    logger.addHandler(fh)
    return logger
    

3:测试

if __name__ == '__main__':
    logger = getlog()
    # 输出日志
      try:
        b = int(input("请输入一个除数:"))
        logger.info("4/{}={},计算完成".format(b,4/b))
        logger.debug("goodjoy!")
    except Exception as error:
        logger.error(str(error))

控制台及文件的结果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值