引言
在实习过程中,组内有许多Python写的脚本,其中使用到很多之前没有接触过的库,所以想以使用示例,简单记录一下。
本篇包括apscheduler、sqlachemy、argparse的记录。
1、apscheduler
apscheduler是Python的定时任务框架(安装:pip install apscheduler
),包含了四个组件:
- 触发器 triggers:描述一个任务何时被触发,有三种内置触发类型,date,一次性执行日期;interval,间隔多长时间执行一次;cron,类似Linux的cron任务
- 作业存储器 job stores:作业被存放的位置,可存储在内存(默认),各种数据库中
- 执行器 executors:处理作业的运行,有线程池(默认)和进程池,当作业完成时,执行器将会通知调度器
- 调度器 schedulers:任务调度器,通过它配置作业存储器、执行器和触发器,添加、修改和删除任务。**开发人员通常与调度器打交道。**调度器有很多类型,适用于不同的场景
- BlockingScheduler,适用于调度程序是进程中唯一运行的线程,调用start函数会阻塞当前线程
- BackgroundScheduler,使用于调度程序在应用程序的后台运行,调用start后主线程不会阻塞
- 还有其他类型……
收藏学习博客:https://blog.csdn.net/somezz/article/details/83104368
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
def task1():
print('Task1:时间是' + str(datetime.now()))
def task2():
print('Task2:时间是' + str(datetime.now()))
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(task1, 'interval', seconds=3)
scheduler.add_job(task2, 'cron', hour=16, minute=19)
scheduler.start()
2、SQLalchemy
这是Python的一个ORM工具,对数据库的操作可以通过操纵Python对象,而避免了原生复杂的SQL语句。
安装方法:pip install SQLalchemy
,但是我安装后直接使用会报No module named 'MySQLdb’的导包错误,需要再执行pip install mysqlclient
使用方法主要分为两步,编写与数据库表关联的Python类;通过Session操作数据库。
# model.py
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
# declarative_base()是sqlalchemy内部封装的一个方法,通过构造一个基类,这个基类和它的子类,可以将Python类和数据库表关联映射起来
class Users(Base):
__tablename__ = "t_users" # 表名
Fid = Column(Integer, primary_key=True) # Column表示数据库的列(字段)
Fname = Column(String(255), unique=True)
# main.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from model import Base
from model import Users
def init_db():
engine = create_engine(
"mysql://root:root@localhost:3306/test?charset=utf8",
echo=True, # 当设置True时会将ORM语句转化为sql语句打印,一般debug的时候用
pool_size=8, # 连接池的大小,默认为5个,
pool_recycle=60*30 # 设置时间以限制数据库多久没连接自动断开
) # 创建连接
Base.metadata.create_all(engine) # 创建表,如果存在则忽略
# 创建Session
DBSession = sessionmaker(bind=engine)
session = DBSession()
return session
if __name__ == '__main__':
session = init_db()
Xiao_ming = Users(Fid=1, Fname='小明')
Xiao_hong = Users(Fid=2, Fname='小红')
session.add(Xiao_ming) # 添加记录小明
session.add(Xiao_hong) # 添加记录小红
session.commit()
session.query(Users).filter_by(Fid=1).update({'Fname': 'admin'}) # 将Fid=1的记录Fname改为admin
session.commit()
update_one = session.query(Users).filter_by(Fid=1).first() # 查询Fid=1的记录的第一条
print(str(update_one.Fid)+' '+update_one.Fname)
session.close()
3、argparse
argparse是Python内置的模块,可以使得程序员方便地对命令行传入参数进行配置和管理。
argparse的使用主要分为三个步骤:
- 创建ArgumentParser()对象
- 调用add_argument()方法添加参数
- 使用parse_args()解析参数
收藏学习博客:https://zhuanlan.zhihu.com/p/56922793
import argparse
def main():
parser = argparse.ArgumentParser(description="argparse示例程序")
parser.add_argument('-n', '--name', type=str, default='admin', help='姓名')
parser.add_argument('-y', '--year', type=int, default=20, help='年龄')
args = parser.parse_args()
print('姓名:%s' % args.name)
print('年龄:%d' % args.year)
if __name__ == '__main__':
main()