python做web系统

阅读: 评论:0

python做web系统

python做web系统

简介本文针对后端服务初始化时,用户表的创建流程与具体实现做介绍。

Motor是一个异步非阻塞的MongoDB驱动程序,很好地支持了Tornado和asyncio的应用。

基于Tornado开发的后端server,为了提供优秀的系统性能通常会大量使用异步编程,因此Motor是此类系统操作MongoDB时的不二之选。

下面基于特定的场景,介绍系统初始化时涉及到的Motor操作MongoDB的方法:

设计

对于一个系统初始化,我设计为在首次访问系统时会自动创建一个admin用户用于后面的登录。

流程图:

首次访问系统的流程

这里面涉及到:连接数据库

查询数据库是否有Users表

插入一条数据(插入数据时会自动创建表)

实现

下面分点介绍实现过程:

连接数据库

首先写一个异步连接数据库方法,使用Motor库的AsyncIOMotorClient类初始化连接:_asyncio import AsyncIOMotorClient as MotorClientasync def conn_mongo():

conn = MotorClient('localhost', 27017)

db = conn.qaadmin return db

注意:连接数据库的配置以你本人的环境为准;

需要提前创建一个qaadmin数据库。

查询数据库是否有Users表

使用MotorDatabase类的list_collection_names方法来获取数据库中的所有collection名的列表,再判断Users是否在列表中来判断是否创建过用户:async def user_check(self):

collections = await conn_mongo.list_collection_names() if 'Users' in collections: return True

else: return False

插入用户数据

对于用户密码,在数据库中需要加密后存储。原始密码加盐后,使用md5加密:import hashlibdef encrypt_password(origin: str, salt: int) -> str:

"""

md5随机数加密用户密码

:param origin: 原始密码

:param salt:

:return:

"""

string = origin + str(salt) return hashlib.de(encoding='utf-8')).hexdigest()

使用MotorColletion类的insert_one方法实现数据的插入,整个系统初始化部分对数据库的操作代码如下:pto import encrypt_passwordimport randomasync def user_check(self):

collections = await conn_mongo.list_collection_names() if 'Users' in collections: return

else:

salt = random.randint(10, 99)

new_user = { 'salt': salt, 'username': 'admin', "password": encrypt_password('admin', salt)}

result = await conn_mongo.Users.insert_one(new_user)

print('Create user: admin, inserted id: %s' % repr(result.inserted_id))

参考

作者:严北

链接:

本文发布于:2024-01-31 13:39:58,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170667959828927.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   python   web
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23