导入导出sql/csv文件与无限级分类

导入导出sql/csv文件与无限级分类

1、导入导出sql/csv文件

1、如果别人没有给你sql文件,那就需要执行数据库迁移命令产生表,后台数据就利用admin或者xadmin或者自己写的后台,自己手动录入数据

2、如果别人给了sql文件,就不需要执行数据库迁移命令来产生表,注意要问清楚mysql数据库版本导出的sql文件

3、用Navicat导出CSV文件和导入csv文件时要注意数据有没有表头数据是从第几行开始的,或者直接使用Navicat查询数据后导出csv文件,一般不固定或者只要一次的csv的数据,我们可以像这样直接写sql

4、如果导入txt文件要使用ultraedit工具打开txt文件看使用的是什么符号做列的区分

 

 

 

2、无限级分类

第一种处理(递归):

将数据如下输出:
上海
-青浦
-浦东
--张江
北京
-昌平

data=[
    {"cat_id":3,"name":"青浦","parent_id":1},
    {"cat_id": 2, "name": "张江", "parent_id": 4},
    {"cat_id":4,"name":"浦东","parent_id":1},
    {"cat_id":5, "name": "北京", "parent_id": 0},
    {"cat_id":6, "name": "昌平", "parent_id": 5},
    {"cat_id": 1, "name": "上海", "parent_id": 0},
]

res = []
def get_son(data, level=0, parent_id=0):
    for item in data:
        # 如果当前循环的parent_id=parent_id,将level等级添加到列表中
        if item['parent_id'] == parent_id:
            item['level'] = level
            res.append(item)
            # 循环所有的数据
            get_son(data, level+1, parent_id=item['cat_id'])
    return res

t = get_son(data)

for i in t:
    print(i['level']*'-', i['name'])
    
#  北京
# - 昌平
#  上海
# - 青浦
# - 浦东
# -- 张江

第二种树的行式:

需求如下:
将data 数据变成lists

lists=[{'cat_id': 5, 'name': '北京', 'parent_id': 0, 'level': 0, 'children':
    [{'cat_id': 6, 'name': '昌平', 'parent_id': 5, 'level': 1}]},

   {'cat_id': 1, 'name': '上海', 'parent_id': 0, 'level': 0, 'children':
       [{'cat_id': 3, 'name': '青浦', 'parent_id': 1, 'level': 1},
        {'cat_id': 4, 'name': '浦东', 'parent_id': 1, 'level': 1, 'children':
            [{'cat_id': 2, 'name': '张江', 'parent_id': 4, 'level': 2}]}]}]
def get_tree(data):
    lists = []
    tree = {}
    for i in data:
        tree[i["cat_id"]] = i  # 转换成data1形式方便后续根据k查找v
    for item in data:
        if item['parent_id'] == 0:  # 如果是根直接加入到lists中
            lists.append(tree[item['cat_id']])
        else:  # 如果不是根将上一级的字典中添加children
            if 'children' not in tree[item['parent_id']]:
                tree[item['parent_id']]['children'] = []
            # 将当前的cat_id加入到children中
            tree[item['parent_id']]['children'].append(tree[item['cat_id']])
    return lists

# data1={
#     3:{"cat_id":3,"name":"青浦","parent_id":1},
#     2:{"cat_id": 2, "name": "张江", "parent_id": 4},
#     4:{"cat_id":4,"name":"浦东","parent_id":1},
#     5:{"cat_id":5, "name": "北京", "parent_id": 0},
#     6:{"cat_id":6, "name": "昌平", "parent_id": 5},
#     1:{"cat_id": 1, "name": "上海", "parent_id": 0},
# }

print(get_tree(data))

# lists=[{'cat_id': 5, 'name': '北京', 'parent_id': 0, 'level': 0, 'children':
#     [{'cat_id': 6, 'name': '昌平', 'parent_id': 5, 'level': 1}]},
#
#  {'cat_id': 1, 'name': '上海', 'parent_id': 0, 'level': 0, 'children':
#      [{'cat_id': 3, 'name': '青浦', 'parent_id': 1, 'level': 1},
#       {'cat_id': 4, 'name': '浦东', 'parent_id': 1, 'level': 1, 'children':
#           [{'cat_id': 2, 'name': '张江', 'parent_id': 4, 'level': 2}]}]}]

 

posted @ 2020-03-16 23:17  Mr沈  阅读(484)  评论(0编辑  收藏  举报