博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
封装web.py连接数据库
阅读量:6195 次
发布时间:2019-06-21

本文共 3887 字,大约阅读时间需要 12 分钟。

hot3.png

1.DBUtil.py
# -*- coding: utf-8 -*-import webDB_NAME = 'db_name'DB_USERNAME = 'famiover'DB_PASSWORD = 'famiover'DB_HOST = 'localhost'DB_PORT = 3306class DBUtil(object):    __conn = None    def __init__(self):        self.__conn = web.database(dbn="mysql", db=DB_NAME, user=DB_USERNAME, pw=DB_PASSWORD, host=DB_HOST,                                   port=DB_PORT, charset='utf8')    def select(self, *table, **params):        return self.__conn.select(*table, **params)    def query(self, sql, vars=None):        return self.__conn.query(sql, vars)    def insert(self, *table, **params):        return self.__conn.insert(*table, **params)    def delete(self, *table, **params):        return self.__conn.delete(*table, **params)    def update(self, *table, **params):        return self.__conn.update(*table, **params)    def transaction(self):        return self.__conn.transaction()
2.sql_util.py
# -*- coding: utf-8 -*-import webfrom famiover.exception.MyException import MyExceptionfrom famiover.model.response import responsefrom famiover.util.db_util import DBUtilfrom famiover.util.object_util import is_dict, is_empty, is_dict_not_emptydb = DBUtil()def insert_any_table(params):    """插入数据到任何表"""    result = opt_validate(params)    if not result.isOk:        print(result.message)    else:        tablename = get_table_name(params)        del params        if is_dict_not_empty(params):            db.insert(tablename, **params)def delete_any_table(params):    """删除数据从任何表"""    result = opt_validate(params)    if not result.isOk:        print(result.message)    else:        tablename = get_table_name(params)        params = delete_table_name(params)        where = web.db.sqlwhere(params)        db.delete(tablename, where=where)def select_any_table(params):    """简单查询数据从任何表"""    result = opt_validate(params)    if not result.isOk:        print(result.message)        exit(0)    else:        tablename = get_table_name(params)        params = delete_table_name(params)        where = web.db.sqlwhere(params)        return db.select(tablename, where=where)def update_any_table(params):    """更新数据在任何表"""    result = opt_validate(params)    if not result.isOk:        print(result.message)    else:        tablename = get_table_name(params)        params = delete_table_name(params)        where = web.db.sqlwhere(params)        db.update(tablename, where=where)def query_any_table(sql):    """复杂查询从任何表"""    return db.query(sql)def get_table_name(params):    """从字典中获取表名"""    if is_dict(params) and params.get("tablename"):        return params["tablename"]    else:        raise MyException(MyException.NoTableName)def delete_table_name(params):    """从字典中删除表名"""    del params["tablename"]    if is_dict_not_empty(params):        return params    else:        # 该条件是为了形成合理的sql语法        return {"0": 0}def opt_validate(params):    """数据库操作之前验证"""    result = response()    tablename = get_table_name(params)    if is_empty(tablename):        result.isOk = False        result.message = "没有传入表名"        return result    return resultdef db_result_to_dict(db_result):    """数据库查询结果转为字典"""    index = 1    dict_result = {}    for dbr in db_result:        key = "rs" + str(index)        index += 1        dict_result[key] = dbr    return dict_result
3.sql_test.py
# -*- coding: utf-8 -*-from famiover.model.SMSql import get_out_userfrom famiover.util.sql_util import select_any_table, query_any_tabledef query1():    dic = {'tablename': 'user', 'name': '马建强'}    result = select_any_table(dic)    for res in result:        print(res)    print(len(result))def query2():    begin_day = "2016-04-19"    end_day = "2016-10-13"    param = {"tablename": "user", "begin_day": begin_day, "end_day": end_day}    users = get_out_user(param)    print(users)def query3():    passdef main():    query3()if __name__ == '__main__':    main()

转载于:https://my.oschina.net/famiover/blog/761832

你可能感兴趣的文章
交换机,路由器,集线器,有什么区别
查看>>
浅析form传值
查看>>
.NET编程 -- 字节数组、数值和十六进制字符串的转换
查看>>
Live Search for Windows Embedded CE 6.0
查看>>
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
查看>>
通过配置的方式Autofac 《第三篇》
查看>>
介绍WS Federaion 二:把百度和谷歌和谐起来
查看>>
VBS学习笔记(2): Call造成的麻烦
查看>>
QTP的那些事—WMI+SQL分析查询工具
查看>>
数学之路(3)-机器学习(3)-机器学习算法-欧氏距离(2)
查看>>
U盘启动引导安装linux
查看>>
hibernate spring annotation setup
查看>>
MySQL 图形化管理工具介绍
查看>>
在.NET上进行线性代数等科学计算 (转)
查看>>
Nhibernate3循序渐进(二): 基本映射和复合主键
查看>>
如何设置mysql远程访问
查看>>
GIS案例学习笔记-ArcGIS整图大图出图实例教程
查看>>
前端周边技术
查看>>
ASP.NET操作服务System.ComponentModel.Win32Exception: 拒绝访问
查看>>
一点总结
查看>>