python中bottle使用实例代码
python中bottle使用实例代码,博智网带你了解详细信息 。
模仿学习同事的代码来写的,主要是搞懂python中如何来组织包,如何调用包,如何读取配置文件,连接数据库,设置路由,路由分组 。(注:使用的是python3.6)
整体目录设计如下:



/api/user.py文件
import logging from bottle import request#db数据库引擎from common.base import DB#调用service层from api.service.user import UserService logger = logging.getLogger("arview")class User(DB, UserService):def __init__(self, *args, **kwargs):print(">>> User init begin")logging.debug('>>> User init begin')super(User, self).__init__(*args, **kwargs)self.dispatch()logger.debug('>>> User init end')def create(self, db=None):create_body = request.jsoncreate_data = https://www.yf-zs.com/redian/self.create_user(create_body, db)return create_datadef delete(self, db=None):delete_body = request.jsondelete_data = self.delete_user(delete_body, db)return delete_datadef list(self, db=None):list_data = self.list_user(db)return list_data#相当于分组路由def dispatch(self):self.app.route('/listUser', method='post')(self.list)self.app.route('/createUser', method='post')(self.create)self.app.route('/deleteUser', method='post')(self.delete)
/service/user.py
import time#model层from db.models.user import UserModelclass UserService(object):def list_user(self, db):user_info_list = db.query(UserModel).all()for item in user_info_list:print(item.username)return user_info_listdef create_user(self, create_body, db):user_model = UserModel(username=create_body.get("username"),password=create_body.get("password"),role=create_body.get("role"),create_time=time.time())db.add(user_model)db.commit()return "success"def delete_user(self, delete_body, db):db.query(UserModel).filter(UserModel.id == (delete_body["id"])).delete()db.commit()return delete_body
然后是dao层也就是数据库操作层(但是明显虽然有dao层但是数据库操作的逻辑已经在service层里了)
最后是读取配置文件和创建数据库引擎 。
读取配置文件使用的包是oslo_config 。
conf.py
# coding:utf8# from __future__ import print_functionfrom oslo_config import cfg DEFAULT_ARVIEW_DB_NAME = 'ginblog'DEFAULT_ARVIEW_DB_USER = 'root'DEFAULT_ARVIEW_DB_USER_PASSWORD = '33demysql'DEFAULT_ARVIEW_DB_HOST = '81.68.179.136'DEFAULT_ARVIEW_DB_PORT = 3306DEFAULT_ARVIEW_DB_URL_TEMPLATE = 'mysql+mysqlconnector://{}:{}@' \'{}:{}/{}?charset=utf8'DEFAULT_ARVIEW_DB_URL = DEFAULT_ARVIEW_DB_URL_TEMPLATE.format(DEFAULT_ARVIEW_DB_USER,DEFAULT_ARVIEW_DB_USER_PASSWORD,DEFAULT_ARVIEW_DB_HOST,DEFAULT_ARVIEW_DB_PORT,DEFAULT_ARVIEW_DB_NAME) # 声明参数选项opt_group = cfg.OptGroup('keystone_authtoken')mysql_opt_group = cfg.OptGroup('db') auth_opts = [cfg.StrOpt('memcached_servers',default='localhost:11211',choices=("localhost:11211", "0.0.0.0:11211"),help=('localhost local', '0.0.0.0 So listen')),cfg.StrOpt('signing_dir',default='/var/cache/cinder',choices=("/var/cache/cinder", "/var/cache/cinder"),),] # mysqlmysql_opts = [cfg.StrOpt('url', default=DEFAULT_ARVIEW_DB_URL),cfg.StrOpt('Db', default='3mysql'),cfg.StrOpt('DbHost', default='381.68.179.136'),cfg.StrOpt('DbPort', default='33306'),cfg.StrOpt('DbUser', default='3DbUser'),cfg.StrOpt('DbPassWord', default='3DbPassWord'),cfg.StrOpt('DbName', default='3DbName'),cfg.BoolOpt('create', default=False),cfg.BoolOpt('commit', default=True),cfg.BoolOpt('echo', default=True, help='是否显示回显'),cfg.BoolOpt('echo_pool', default=False, help='数据库连接池是否记录 checkouts/checkins操作'),cfg.IntOpt('pool_size', default=1000, help='数据库连接池中保持打开的连接数量'),cfg.IntOpt('pool_recycle', default=600, help='数据库连接池在连接被创建多久(单位秒)以后回收连接')] token_opts = [cfg.StrOpt('project_domain_name'),cfg.StrOpt('project_name'),] CINDER_OPTS = (auth_opts +token_opts)MYSQLCINDER_OPTS = (mysql_opts) # 注册参数选项CONF = cfg.CONF# 注册组CONF.register_group(opt_group)CONF.register_group(mysql_opt_group) # 将各个选项注册进组里CONF.register_opts(CINDER_OPTS, group=opt_group)CONF.register_opts(MYSQLCINDER_OPTS, group=mysql_opt_group) if __name__ == "__main__":# 要读取哪个配置文件CONF(default_config_files=['cinder.conf'])print('mysql Db配置组为%s' % (CONF.db.Db))print('mysql DbHost%s' % (CONF.db.DbHost))print('mysql DbPort配置组为%s' % (CONF.db.DbPort))print('mysql DbUser%s' % (CONF.db.DbUser))
配置文件cinder.conf
[db]Db = mysqlDbHost = 81.68.179.136DbPort = 3306DbUser = rootDbPassWord = 33demysqlDbName = ginblogcreate = falsecommit = trueecho = falseecho_pool = falsepool_size = 1000pool_recycle =600
推荐阅读
- 12mis含义是什么
- 14点30分是什么时辰
- 12306的积分有什么用
- bios中fastboot要开吗
- cdr中要怎么进行居中对齐
- 中华鲟是保护动物吗
- 9岁身高有多高
- 中国有几大名山分别在哪里
- 圣经中麦基洗德是什么人
- 泰勒科学管理思想中对人的研究仅仅存在于什么的范畴
