ancient.module
--- 拓展的IO模块¶
asyncMysql¶
-
class
ancient.module.asyncMysql.
Component
[源代码]¶ 基类:
object
该模块参数均来源与madtornado配置文件,并且不支持同时连接多个不同的数据库
异步mysql快速请求模块(基于tormysql),示例:
db = asyncMysql().Component() await db.on() result = await db.select_tcw("mt") # 读取mt表下的所有内容并返回 self.write(result) # 返回给前台页面显示
安全建议:
永远不要相信用户输入内容,sql模块虽然对于value进行了预检测 但是对于key部分还是无能为力,所以一定不要让用户对key的部分有 任何操作,只基于用户提供value值的权限,这样做是安全的。
-
delete_tw
(table: str, where: str = None, where_arg: List[SQL_CONTENT] = None) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的删除数据
参数: - table -- 数据表名称
- where -- 如果该项不填,则删除整个表格,一个字符串,代表where条件筛选部分,如id=1 and name=a
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: genSQL.InputResult结果信息对象
-
input_sql
(sql, arg_list=None, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 执行插入,更新,删除等输入系列的sql语句
参数: - sql -- 输入系列的sql语句
- arg_list -- 预处理参数列表,可以是二维数组代表多行插入前提需要设置many参数
- many -- 是否启用多行输入
返回: genSQL.InputResult 输入语句查询信息
-
insert_tc
(table, content, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的插入数据,只能简单的插入数据
示例内容:
insert_tc("table", [1, 2, 3, 4, 5]) 转换内容 : ('insert into table values(%s,%s,%s,%s,%s)', [1, 2, 3, 4, 5]) insert_tc("table", [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], many=True, ph="?") 转换内容 : ('insert into table values(?,?,?,?,?)', [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) insert_tc("table", {"id": 12, "name": "SystemLight"}, many=False, ph="%s") 转换内容 : ('insert into table(name,id) values(%s,%s)', ['SystemLight', 12]) insert_tc("table", {"key": ["id", "name"], "value": [["1", "lisys"], ["2", "sl"]]}, many=True, ph="%s") 转换内容 : ('insert into table(id,name) values(%s,%s)', [['1', 'lisys'], ['2', 'sl']])
参数: - table -- 表格的名称
- content -- 支持四中格式传参,参考示例内容
- many -- 是否启用多行插入
返回: genSQL.InputResult结果信息对象
-
insert_update_tc
(table, content, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的插入即更新,这是mysql的特性方法,存在则更新数据,不存在则插入一条新数据
参数: - table -- 数据表名称
- content -- 支持dict多行模式{"key":[],"value":[[]]},和dict单行模式传参
- many -- 是否启用多行模式
返回: genSQL.InputResult结果信息对象
-
on
() → None[源代码]¶ 开启一个数据库实例从sql_pool当中
举例:
db=Component() db.on() result = await db.select_tw("table") db.off() # 与上述使用方法一致 async with Component() as com: result = await com.select_tcw("table")
快捷使用方法:
with Component() as db: db.select_tw("table")
返回: None
-
output_sql
()[源代码]¶ 输出查询内容,直接传入select的sql语句,用于查询
参数: - sql -- select开头的sql语句
- arg_list -- 预处理参数,如果需要预处理查询,需要在sql语句中使用%s作为占位符
返回: 查询到的结果内容
-
select_tcw
()[源代码]¶ 简化版的查询,用于快捷查询表格内容,不支持连表等高端操作
参数: - table -- 查询的表格名称
- field -- 一个元组,代表要查询的字段名称
- where -- 一个字符串,代表where条件筛选部分,如id=1 and name=a,可以在其中使用占位符,同时要提供where_arg
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: Tuple 查询到的结果内容
-
set_return_dict
(is_return_dict: bool = True) → None[源代码]¶ 设置是否返回字典格式而非数组格式的数据对象
参数: is_return_dict -- 是否返回字典格式数据 返回: None
-
sql_pool
= <tormysql.pool.ConnectionPool object>¶
-
truncate_t
(table: str) → ancient.rig.genSQL.InputResult[源代码]¶ 快速清空表格数据
参数: table -- 数据表名称 返回: genSQL.InputResult结果信息对象
-
update_tcw
(table: str, content: Dict[str, Any], where: str = None, where_arg: List[SQL_CONTENT] = None) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的更新数据
参数: - table -- 数据表名称
- content -- 字典对象,键值对相对应
- where -- 一个字符串,代表where条件筛选部分,如id=1 and name=a,可以在其中使用占位符,同时要提供where_arg
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: genSQL.InputResult结果信息对象
-
syncFile¶
-
class
ancient.module.syncFile.
Component
(path='', top_path=None)[源代码]¶ 基类:
object
文件上下文处理模块
参数: - path -- 相对于root_path进行偏移的子文件,该类中通过get_safe_path来获取一个安全偏移的路径,防止输入超出文件路径的地址
- top_path -- 默认情况从配置文件中获取,核心操作目录,有时需要把一些文件写入静态资源管理的文件夹中,可以修改它
-
get_safe_path
(*args) → str[源代码]¶ 获取相对于self.root_path路径进行偏移子路径,如果合成后的子路径超出self.root_path路径 会抛出AssertionError异常,有时希望通过用户传来的参数来构成一个路径,需要 用到该方法,避免用户传递的参数中包含..等内容,最终导致路径位置偏移出限定目录中,接收多个路径合成参数
参数: args -- 多个路径参数 返回: 在限定路径下的子路径字符串
-
is_exist_md5
(md5: str, suffix: str) → bool[源代码]¶ 判断是否存在md5文件,用于分片上传的方法,需要[捕获异常]处理
参数: - md5 -- md5值
- suffix -- 文件后缀名称
返回: 布尔值,是否存在
-
md5_to_file
(fragment_path: str, md5: str, suffix: str) → Iterable[源代码]¶ 该功能为分片上传功能,用于合并分片上传产生的碎片块,需要[捕获异常]处理
使用案例:
file_context = syncFile.Component() for i in file_context.md5_to_file(fragment_path , md5, suffix): if not i: return self.write_json(message="读取文件块产生错误,合并失败", status=1) # 提高并发,抛出当前handler控制主线程的权利 await gen.sleep(0) self.write_json(message="合并成功")
参数: - fragment_path -- 碎片文件夹路径
- md5 -- md5值
- suffix -- 文件后缀拓展名
返回: None
-
read
(path: str, auto_close: bool = True) → Iterable[源代码]¶ 读取文件数据返回生成器
参数: - path -- 读取文件的路径
- auto_close -- 是否及时关闭文件流,如果设置False可以获取read_fp属性手动关闭
返回: generator
-
receive_file
(files, arg_name='image', is_only=True, file_name=None) → Optional[Tuple[str, str, str]][源代码]¶ 帮助tornado进行文件接收,该方法需要捕捉异常,只接收第一个文件 接收路径会保证文件夹存在,不存在则创建,并且会查看是否为安全路径,不是 安全路径抛出异常,需要[捕获异常]处理
参数: - files -- self.requests.files
- arg_name -- 参数名称
- is_only -- 是否生成唯一ID文件名
- file_name -- 当is_only=False时,提供的自定义文件名称,如果不提供则来自上传的文件名,拓展名以上传文件为准无需附加
返回: (文件名称[不携带拓展名],文件拓展名,文件相对服务器保存路径)
-
static
rollback_receive_file
(path: str) → None[源代码]¶ 有时接收文件后将接收的文件名传入到数据库中,如果这时数据库错误需要回退操作,那么你可以使用该方法删除接收的文件,实现回退
参数: path -- 文件路径 返回: None
syncJwt¶
syncMemcached¶
syncMysql¶
-
class
ancient.module.syncMysql.
Component
[源代码]¶ 基类:
object
该模块参数均来源与madtornado配置文件,并且不支持同时连接多个不同的数据库
安全建议:
永远不要相信用户输入内容,sql模块虽然对于value进行了预检测 但是对于key部分还是无能为力,所以一定不要让用户对key的部分有 任何操作,只基于用户提供value值的权限,这样做是安全的。
-
delete_tw
(table: str, where: str = None, where_arg: List[SQL_CONTENT] = None) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的删除数据
参数: - table -- 数据表名称
- where -- 如果该项不填,则删除整个表格,一个字符串,代表where条件筛选部分,如id=1 and name=a
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: genSQL.InputResult结果信息对象
-
input_sql
(sql, arg_list=None, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 执行插入,更新,删除等输入系列的sql语句
参数: - sql -- 输入系列的sql语句
- arg_list -- 预处理参数列表,可以是二维数组代表多行插入前提需要设置many参数
- many -- 是否启用多行输入
返回: genSQL.InputResult 输入语句查询信息
-
insert_tc
(table, content, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的插入数据,只能简单的插入数据
示例内容:
insert_tc("table", [1, 2, 3, 4, 5]) 转换内容 : ('insert into table values(%s,%s,%s,%s,%s)', [1, 2, 3, 4, 5]) insert_tc("table", [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], many=True, ph="?") 转换内容 : ('insert into table values(?,?,?,?,?)', [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) insert_tc("table", {"id": 12, "name": "SystemLight"}, many=False, ph="%s") 转换内容 : ('insert into table(name,id) values(%s,%s)', ['SystemLight', 12]) insert_tc("table", {"key": ["id", "name"], "value": [["1", "lisys"], ["2", "sl"]]}, many=True, ph="%s") 转换内容 : ('insert into table(id,name) values(%s,%s)', [['1', 'lisys'], ['2', 'sl']])
参数: - table -- 表格的名称
- content -- 支持四中格式传参,参考示例内容
- many -- 是否启用多行插入
返回: genSQL.InputResult结果信息对象
-
insert_update_tc
(table, content, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的插入即更新,这是mysql的特性方法,存在则更新数据,不存在则插入一条新数据
参数: - table -- 数据表名称
- content -- 支持dict多行模式{"key":[],"value":[[]]},和dict当行模式传参
- many -- 是否启用多行模式
返回: genSQL.InputResult结果信息对象
-
on
() → None[源代码]¶ 开启一个数据库实例从sql_pool当中
举例:
db=Component() db.on() db.select_tw("table") db.off()
快捷使用方法:
with Component() as db: db.select_tw("table")
返回: None
-
output_sql
()[源代码]¶ 输出查询内容,直接传入select的sql语句,用于查询
参数: - sql -- select开头的sql语句
- arg_list -- 预处理参数,如果需要预处理查询,需要在sql语句中使用%s作为占位符
返回: 查询到的结果内容
-
select_tcw
()[源代码]¶ 简化版的查询,用于快捷查询表格内容,不支持连表等高端操作
参数: - table -- 查询的表格名称
- field -- 一个元组,代表要查询的字段名称
- where -- 一个字符串,代表where条件筛选部分,如id=1 and name=a,可以在其中使用占位符,同时要提供where_arg
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: Tuple 查询到的结果内容
-
set_cursor_dict
(is_return_dict: bool = True) → None[源代码]¶ 设置是否返回字典格式而非数组格式的数据对象
参数: is_return_dict -- 是否返回字典格式数据 返回: None
-
truncate_t
(table: str) → ancient.rig.genSQL.InputResult[源代码]¶ 快速清空表格数据
参数: table -- 数据表名称 返回: genSQL.InputResult结果信息对象
-
update_tcw
(table: str, content: Dict[str, Any], where: str = None, where_arg: List[SQL_CONTENT] = None) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的更新数据
参数: - table -- 数据表名称
- content -- 字典对象,键值对相对应
- where -- 一个字符串,代表where条件筛选部分,如id=1 and name=a,可以在其中使用占位符,同时要提供where_arg
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: genSQL.InputResult结果信息对象
-
syncSqlite¶
-
class
ancient.module.syncSqlite.
Component
[源代码]¶ 基类:
object
该模块参数均来源与madtornado配置文件,并且不支持同时连接多个不同的数据库
安全建议:
永远不要相信用户输入内容,sql模块虽然对于value进行了预检测 但是对于key部分还是无能为力,所以一定不要让用户对key的部分有 任何操作,只基于用户提供value值的权限,这样做是安全的。
-
delete_tw
(table: str, where: str = None, where_arg: List[SQL_CONTENT] = None) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的删除数据
参数: - table -- 数据表名称
- where -- 如果该项不填,则删除整个表格,一个字符串,代表where条件筛选部分,如id=1 and name=a
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: genSQL.InputResult结果信息对象
-
input_sql
(sql, arg_list=None, many=False) → ancient.rig.genSQL.InputResult[源代码]¶ 执行插入,更新,删除等输入系列的sql语句
参数: - sql -- 输入系列的sql语句
- arg_list -- 预处理参数列表,可以是二维数组代表多行插入前提需要设置many参数
- many -- 是否启用多行输入
返回: genSQL.InputResult 输入语句查询信息
-
insert_tc
(table, content, many=False)[源代码]¶ 简化版的插入数据,只能简单的插入数据
示例内容:
insert_tc("table", [1, 2, 3, 4, 5]) 转换内容 : ('insert into table values(%s,%s,%s,%s,%s)', [1, 2, 3, 4, 5]) insert_tc("table", [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], many=True, ph="?") 转换内容 : ('insert into table values(?,?,?,?,?)', [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) insert_tc("table", {"id": 12, "name": "SystemLight"}, many=False, ph="%s") 转换内容 : ('insert into table(name,id) values(%s,%s)', ['SystemLight', 12]) insert_tc("table", {"key": ["id", "name"], "value": [["1", "lisys"], ["2", "sl"]]}, many=True, ph="%s") 转换内容 : ('insert into table(id,name) values(%s,%s)', [['1', 'lisys'], ['2', 'sl']])
参数: - table -- 表格的名称
- content -- 支持四中格式传参,参考示例内容
- many -- 是否启用多行插入
返回: genSQL.InputResult结果信息对象
-
on
() → None[源代码]¶ 开启一个数据库实例从sql_pool当中
举例:
db=Component() db.on() db.select_tw("table") db.off()
快捷使用方法:
with Component() as db: db.select_tw("table")
返回: None
-
output_sql
()[源代码]¶ 输出查询内容,直接传入select的sql语句,用于查询
参数: - sql -- select开头的sql语句
- arg_list -- 预处理参数,如果需要预处理查询,需要在sql语句中使用%s作为占位符
返回: 查询到的结果内容
-
select_tcw
()[源代码]¶ 简化版的查询,用于快捷查询表格内容,不支持连表等高端操作
参数: - table -- 查询的表格名称
- field -- 一个元组,代表要查询的字段名称
- where -- 一个字符串,代表where条件筛选部分,如id=1 and name=a,可以在其中使用占位符,同时要提供where_arg
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: Tuple 查询到的结果内容
-
set_cursor_dict
(is_return_dict: bool = True) → None[源代码]¶ 设置是否返回字典格式而非数组格式的数据对象
参数: is_return_dict -- 是否返回字典格式数据 返回: None
-
update_tcw
(table: str, content: Dict[str, Any], where: str = None, where_arg: List[SQL_CONTENT] = None) → ancient.rig.genSQL.InputResult[源代码]¶ 简化版的更新数据
参数: - table -- 数据表名称
- content -- 字典对象,键值对相对应
- where -- 一个字符串,代表where条件筛选部分,如id=1 and name=a,可以在其中使用占位符,同时要提供where_arg
- where_arg -- 如果where传入的字符串包括占位符,那么传入参数列表,让sql可以预查询
返回: genSQL.InputResult结果信息对象
-