热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用FlaskSQLAlchemy将csv、json格式数据插入mysql数据库

文章目录一、获取Flask、SQLAlchemy实例,绑定Flask实例二、插入csv文件中的数据1.声明orm关系映射2.插入数据3.效果三、插入json中的数据1

文章目录

    • 一、获取Flask、SQLAlchemy实例,绑定Flask实例
    • 二、插入csv文件中的数据
      • 1.声明orm关系映射
      • 2.插入数据
      • 3. 效果
    • 三、插入json中的数据
      • 1.ORM关系映射
      • 2.插入数据
      • 3.效果










一、获取Flask、SQLAlchemy实例,绑定Flask实例

db = SQLAlchemy()
db.init_app(app)

其中app来自工厂函数

def create_app(app):app = Flask(__name__)app.config.from_object(Config)config_extensions(app)return app





二、插入csv文件中的数据

数据文件:mysql.csv(h3c套一提供数据)

1.声明orm关系映射

# -*- coding:utf-8 -*-
# Created by ZhaoWen on 2020/10/25from app.models import dbclass Tbl_hotel_test(db.Model):__tablename__ = 'tbl_hotel_test'seq = db.Column(db.String(30),primary_key=True) #SEQhotel_name = db.Column(db.String(100)) #酒店名称country = db.Column(db.String(50)) #国家province = db.Column(db.String(50)) #省份city = db.Column(db.String(50)) #城市business_district = db.Column(db.String(100)) #商圈start = db.Column(db.String(30)) #星级department = db.Column(db.String(50)) #业务部门rooms = db.Column(db.Integer) #房间数字photos = db.Column(db.Integer) #图片数score = db.Column(db.DECIMAL(15,12)) #评分content = db.Column(db.Integer) #评论数city_avg_night = db.Column(db.DECIMAL(6,2)) #城市平均实住间夜hotel_total_order = db.Column(db.Integer) #酒店总订单hotel_total_night = db.Column(db.Integer) # 酒店总间夜hotel_right_order = db.Column(db.Integer) # 酒店实住订单hotel_right_night = db.Column(db.Integer) # 酒店实住间夜hotel_direct_order = db.Column(db.Integer) #酒店直销订单hotel_direct_night = db.Column(db.Integer) #酒店直销间夜hotel_direct_right_order = db.Column(db.Integer) #酒店直销实住订单hotel_direct_right_night = db.Column(db.Integer) #酒店直销实住间夜hotel_direct_refuse_order = db.Column(db.Integer) #酒店直销拒单hotel_direct_refuse_pie = db.Column(db.String(20)) #酒店直销拒单率city_direct_order = db.Column(db.Integer) #城市直销订单city_direct_Refuse_pie = db.Column(db.String(20)) #城市直销拒单率directcity_issmall = db.Column(db.Integer) #拒单率是否小于等于直销城市均值



2.插入数据

@main_print.route('/addData')
def main_add():print('开始插入')with open('app/static/data/mysql.csv','r',encoding='utf-8') as f:reader = csv.reader(f)if reader != None:for i in reader:hotel = Tbl_hotel_test(seq=i[0],hotel_name=i[1],country=i[2],province=i[3],city=i[4],business_district=i[5],start=i[6],department=i[7],rooms=i[8],photos=i[9],score=i[10],content=i[11],city_avg_night=i[12],hotel_total_order=i[13],hotel_total_night=i[14],hotel_right_order=i[15],hotel_right_night=i[16],hotel_direct_order=i[17],hotel_direct_night=i[18],hotel_direct_right_order=i[19],hotel_direct_right_night=i[20],hotel_direct_refuse_order=i[21],hotel_direct_refuse_pie=i[22],city_direct_order=i[23],city_direct_Refuse_pie=i[24],directcity_issmall=i[25])db.session.add(hotel)# return render_template('/test/test-data.html',reader = reader)db.session.commit()return render_template('/test/sucess.html',content='插入成功')return ''



3. 效果

在这里插入图片描述





三、插入json中的数据


1.ORM关系映射

# -*- coding:utf-8 -*-
# Created by ZhaoWen on 2020/10/25from app.models import db'''
城市,公司全名,公司ID,公司简称,公司大小,公司所在商区,职位所属 ,教育要求,公司所属领域 ,职位ID,职位福利,职位名称,薪水,工作年限要求
'''
class Tbl_zp(db.Model):__tablename__ = 'tbl_zp_test'id = db.Column(db.Integer,primary_key=True,autoincrement=True) #序号company_id = db.Column(db.Integer) # 公司idcity = db.Column(db.String(20)) # 城市conpany_name = db.Column(db.String(50)) # 公司全名conpany_simple_name = db.Column(db.String(20)) # 公司简称conpany_size = db.Column(db.String(20)) # 公司大小conpany_area = db.Column(db.String(50)) #公司所在商圈job_category = db.Column(db.String(20)) #职位所属分类school_level = db.Column(db.String(10)) #教育要求conpany_category = db.Column(db.String(20)) # 公司所属领域job_id = db.Column(db.String(20)) #职位idjob_get = db.Column(db.String(200)) # 职位福利job_name = db.Column(db.String(50)) # 职位名称job_salary = db.Column(db.String(20)) # 薪资job_year = db.Column(db.String(50)) #工作年限要求



2.插入数据

@main_print.route('/addData2')
def main_add2():print('开始插入')result = []with open('app/static/data/zpdata.json',encoding='utf-8') as f:result.append(json.load(f))if result != None:for r in result:for i in r:'''城市,公司全名,公司ID,公司简称,公司大小,公司所在商区,职位所属 ,教育要求,公司所属领域 ,职位ID,职位福利,职位名称,薪水,工作年限要求'''try:zp = Tbl_zp(city=i['城市'], conpany_name=i['公司全名'], company_id=i['公司ID'],conpany_simple_name=i['公司简称'], conpany_size=i['公司大小'], conpany_area=i['公司所在商区'], job_category=i['职位所属'],school_level=i['教育要求'], conpany_category=i['公司所属领域'], job_id=i['职位ID'],job_get=i['职位福利'],job_name=i['职位名称'], job_salary=i['薪水'], job_year=i['工作年限要求'])db.session.add(zp)except:db.session.delete(zp)db.session.commit()# return render_template('test/json-show.html',result = result)return render_template('/test/sucess.html', content='插入成功')return ''



3.效果

在这里插入图片描述


推荐阅读
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
author-avatar
水晶玲珑9261996
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有