Python 边做边学 9.6 数据库操作--查询条件解析工具(QCondition)
2017-08-21 19:07
776 查看
原文连接:http://blog.csdn.net/tomorrow13210073213/article/category/6931287
具体使用后面详述;
以上内容仅供练习,学习使用;
需求
定义一个查询条件解析工具,解析出简单查询sql语句,解析查询值;Talk is cheap. Show me the code
class QCondition(): # 解析后的sql语句 __sql = None # 解析后的条件值 __vals = None def __init__(self, condition): # 解析sql语句 sql_s = ana_condition_sql(condition, "") if sql_s is None: self.__sql = None else: # 需要删除前后的括号“()” sql_len = len(sql_s) if sql_len <= 2: self.__sql = None else: if sql_s.startswith("("): sql_s = sql_s[1:sql_len - 1] self.__sql = sql_s # 解析条件值 self.__vals = ana_condition_val(condition, []) def get_sql(self): return self.__sql def get_vals(self): return self.__vals # 递归解析sql语句 # 最外层的“condition”是个tuple def ana_condition_sql(condition, sql): # 条件单元 if type(condition).__name__ == "Qwhere": if condition.get_field() is None or condition.get_express() is None or condition.get_value() is None: return sql ss = condition.get_field() + " " + condition.get_express() + " %s" sql = sql + ss + " " return sql # 排序单元 if type(condition).__name__ == "Qorder": if condition.get_field() is None or condition.get_order() is None: return sql ss = " order by " + condition.get_field() + " " + condition.get_order() + "" sql = sql + ss + " " return sql # 分页单元 if type(condition).__name__ == "Qpage": if condition.get_offset() is None or condition.get_size() is None: return sql ss = " limit " + str(condition.get_offset()) + "," + str(condition.get_size()) + "" sql = sql + ss + " " return sql # 连接字符串(=,>,< 等) if type(condition).__name__ == "str": sql = sql + " " + condition + " " return sql if type(condition).__name__ == "tuple": sql = sql + "(" for __con in condition: sql = ana_condition_sql(__con, sql) sql = sql + ")" return sql return sql # 递归解析sql查询值 def ana_condition_val(condition, vals): if type(condition).__name__ == "Qwhere": if condition.get_field() is None or condition.get_express() is None or condition.get_value() is None: return vals vals.append(condition.get_value()) return vals if type(condition).__name__ == "tuple": for __con in condition: vals = ana_condition_val(__con, vals); return vals return vals
具体使用后面详述;
以上内容仅供练习,学习使用;
相关文章推荐
- Python 边做边学 9.7 数据库操作--查询基础工具(BaseMapper)
- Python 边做边学 9.3 数据库操作--查询条件单元(Qwhere)
- python 中 MySQLdb 操作数据库,查询条件为元组时写法。
- Python 边做边学 9.4 数据库操作--排序条件单元(Qorder)
- Python 边做边学 9.5 数据库操作--分页条件单元(Qpage)
- Python 边做边学 9.8 数据库操作--数据库执行入口工具(MapperExecute)
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- tp数据库与模型——查询条件生成方法、查询构造器实现CRUD操作
- 数据库字典查询,从EF工具操作中提取的
- Python操作Excel文件中多WorkSheet模拟数据库内连接查询
- Python 边做边学 9.10 数据库操作--实际使用
- 关于数据库查询语句中的where 1=1条件的应用解析
- 学习python之编写简单简单连接数据库并执行查询操作
- iBatis 操作数据库【设置查询条件】,简单例子之三
- 学习python之编写简单简单连接数据库并执行查询操作
- Python 边做边学 9.2 数据库操作--定义数据字段(DbColumn)
- Python 边做边学 8.3 工具类--数据库工具(DbUtil)
- Yii2.0-advanced-10—数据库操作4(AR条件查询where)
- Python数据库查询之组合条件查询-F&Q查询