zoukankan      html  css  js  c++  java
  • python实现数据库增删改查

    column_dic = {"id": 0, "name": 1, "age": 2, "phone": 3, "job": 4}
    
    
    def get_show_list(col_condition): # "select age,name"
        """
        获取要展示的列名
        :param col_condition: 用户输入的select条件
        :return: 列名组成的列表
        """
        col_info_list = col_condition.strip().split("select")  # ["", "age,name"]
        col_info_list = [col_info_item for col_info_item in col_info_list if col_info_item.strip()]  # ["age,name"]
        if col_info_list:
            col_info = col_info_list[0].strip()  # "age,name"
            if "*" in col_info:
                return column_dic.keys()
            elif col_info:
                ret = col_info.split(",")  # [" age ","name"]
                return [item.strip() for item in ret]  # ["age","name"]
            else:
                print(col_info)
    
    
    def filter_handler(operate, con):  # ">" , "age>22"
        selected_list = []
        col, val = con.split(operate)
        col = col.strip()
        val = val.strip()
        judge = "int(line_list[column_dic[col]]) %s int(val)" % operate if operate == "<" or operate == ">" 
            else "line_list[column_dic[col]] %s val" % operate
        f = open("student", encoding="utf-8")
        for line in f:
            line_list = line.strip().split(",")
            if eval(judge):
                selected_list.append(line_list)
        f.close()
        return selected_list
    
    
    def get_selected_line(con):  # con = "age>22"
        """
        获取要查找的行,并将每一行作为列表项存储到selected_list
        :param con:
        :return:
        """
        if ">" in con:
            selected_list = filter_handler(">", con)
        elif "<" in con:
            selected_list = filter_handler("<", con)
        elif "=" in con:
            selected_list = filter_handler("==", con.replace("=", '=='))
        elif "like" in con:
            selected_list = filter_handler("in", con)
        return selected_list
    
    
    def show(selected_list, show_list):
        for selected_item in selected_list:
            for col in show_list:
                print(selected_item[column_dic[col]], end=" ")
            print()
    
    
    condition = input(">>>")  # "select age,name where age>22"
    ret = condition.split('where')  # ["select age,name", "age>22"]
    con = ret[1].strip()  # "age>22"
    show_list = get_show_list(ret[0])  # ["name", "age"]
    selected_list = get_selected_line(con)
    show(selected_list, show_list)
    

      

  • 相关阅读:
    python 单例模式
    socketserver 多进程、多线程应用实例
    socket 编程的一些应用例子
    模拟一个http 请求的json格式报文,带 rsa 签名操作
    python excel基本操作
    多线程 进程间共享变量等
    多线程 multiprocessing 的几个小例子
    mysql 数据库的相关操作
    正则表达式匹配IP地址
    32-服务的容量规划:怎样才能做到有备无患
  • 原文地址:https://www.cnblogs.com/nxrs/p/10384558.html
Copyright © 2011-2022 走看看