目录
- 日期-天
- 正则-三种
- 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.youkuaiyun.com/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.youkuaiyun.com/weixin_43405300/article/details/120017878?
http://runxinzhi.com/pengfei-nie-p-14446901.html
八:Logging
参考文章:
https://blog.youkuaiyun.com/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))
控制台及文件的结果: