IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 实现mysql中不特定字段(按顺序)与新增加的字段名称匹配 -> 正文阅读

[大数据]实现mysql中不特定字段(按顺序)与新增加的字段名称匹配

?笔记:由于成本项的数据并不是特定的,如果写死了,前段人员不能修改。如何实现前端人员具有一定的编辑成本项功能。

思路:

第一步:数据库字段命名为d1,d2,d3.......?

第二步:后台按照html模版,给定的位置,由用户按照顺序,分别自定义费用项名称

第三步:将第二步录入的数据与数据库字段d1,d2,d3绑定。数据数据输出时,以自定义的名称按按顺序依次显示数据库中的数据。

测试代码:?接收前端的字段,按{'d1':'参数1','d2':'参数2','d3':'参数3'}?样式写成字典后,存入数据表(要先转成json)

#models.py
class Bind_Keyword(db.Model):
    __tablename__ = 'bind_keyword'
    id = db.Column(db.Integer, primary_key=True)
    proj_id = db.Column(db.Integer)
    bind_data = db.Column(db.String(128))

def check_bind_id(bind_keyword):
    return {
        'porj_id': bind_keyword.proj_id,
    }
'''-----------------------------------------'''

blueprint.py
from models import key_to_dict,Bind_Keyword,check_bind_id
@bp.route('/bind',methods=["GET", "POST"])
def bind_keywords():

   #从前端接收数据,CS1,CS2,CS3
    if request.method=='POST':
        data_cs1=request.values.get('cs1')
        data_cs2 = request.values.get('cs2')
        data_cs3 = request.values.get('cs3')
        print(data_cs1)
        dict={}
       #写入字典,格式为{'d1':'参数1','d2':'参数2','d3':'参数3'}
        dict.update({'d1':data_cs1,'d2':data_cs2,'d3':data_cs3})
        print(dict) #{'d1': '人工', 'd2': '22', 'd3': 'Q'}
        dict =json.dumps(dict) #转成json格式,否则不能写入到字典中  {"d1": "\u4eba\u5de5", "d2": "22", "d3": "Q"}
       #将字典写入到数据库中---新建Bind_Keyword数据库
        if dict:
            pid=2  #暂定项目编号是2
            '''先判断数据库中是否有这个proj_id的数据,如果没有则新插入,如有有,则更新'''
            #先找到数据库中projcet_id
            p_id = Bind_Keyword.query.all()
            projcet_id = (list(map(check_bind_id, p_id)))
            list_v = []
            for i in projcet_id:
                for k,v in i.items():
                    list_v.append(v)
            #projcet_id写入到字典
            print(list_v)  #[1, 3]
            #判断
            if pid in list_v:
                print('在列表中,下面开始按更新修改数据')
                Bind_Keyword.query.filter_by(proj_id=pid).update({'bind_data': dict})
                db.session.commit()
            else:
                print('不在列表中,下面开始按照新增写入')
                data = Bind_Keyword(proj_id=pid, bind_data=dict)
                db.session.add(data)
                db.session.commit()
    return render_template('bind_keyword.html')

注意: 前端录入的参数字段不能重复,需要采用js进行判断

将dict从字典中取出,并与数据库中的数据进行匹配,绑定成新的数据

@bp.route('/bind_data',methods=["GET", "POST"])
def bind_data():
    pid = 2  # 暂定项目编号是2
    #测试将dict取出
    d = session.query(Bind_Keyword).filter_by(proj_id=pid).first()
    dict = json.loads(d.bind_data)
    print(type(dict))
   #匹配结果
    # dict={'A':'人工费','B':'材料费','C':'机械费'}
   #从数据中拿到数据,并写成列表格式
    data1 = Cost_Target.query.all()
    data1_map = list(map(key_to_dict, data1))
    print(data1_map)
    #[{'id': 1, 'd1': 1, 'd2': '', 'd3': '1'}, {'id': 3, 'd1': 3, 'd2': '222', 'd3': ''}]

    #将上面列表中的d1,d2,d3替换成dict字典中,对应的 值,即d1→参数1,d2→参数2
    for i in data1_map:
        print(type(i)) #{'id': 1, 'A': 1, 'B': '', 'C': '1'}
        for m, n in dict.items():
            # print('**', m, n)
            for k in i:
                # print('++',k,v)
                if k ==m:
                    i[n] = i.pop(k)
                    break
    print(data1_map)
    #[{'id': 1, '人工费': 1, '材料费': '', '机械费': '1'}, {'id': 3, '人工费': 3, '材料费': '222', '机械费': ''}]
    return render_template('bind_data.html',data=data1_map)

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:06:05  更:2022-02-04 11:07:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:48:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码