python将数据插入数据库的案例分析

这篇文章主要介绍了python将数据插入数据库的案例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

python将数据插入数据库的方法:

首先读入数据并建立数据库连接;

然后创建数据库;

接着执行插入数据语句,迭代读取每行数据;

最后关闭数据库连接即可。

比如现在我们要将如下Excel数据表格插入到mysql数据库中,该如何实现呢?

python将数据插入数据库的案例分析

实现代码:

#导入需要使用到的数据模块 import pandas as pd import pyMysql #读入数据 filepath = 'E:\_DataSet\catering_sale.xls' data = pd.read_excel(filepath) #建立数据库连接 db = pyMYSQL.connect('localhost','root','1234','python_analysis') #获取游标对象 cursor = db.cursor() #创建数据库,如果数据库已经存在,注意主键不要重复,否则出错 try:     cursor.execute('create table catering_sale(num int primary key,date datetime, sale float )') except:     print('数据库已存在!') #插入数据语句 query = """insert into catering_sale (num, date, sale) values (%s,%s,%s)""" #迭代读取每行数据 #values中元素有个类型的强制转换,否则会出错的 #应该会有其他更合适的方式,可以进一步了解 for r in range(0, len(data)):     num = data.ix[r,0]     date = data.ix[r,1]     sale = data.ix[r,2]     values = (int(num), str(date), float(sale))     cursor.execute(query, values) #关闭游标,提交,关闭数据库连接 #如果没有这些关闭操作,执行后在数据库中查看不到数据 cursor.close() db.commit() db.close() #重新建立数据库连接 db = pymysql.connect('localhost','root','1234','python_anylysis') cursor = db.cursor() #查询数据库并打印内容 cursor.execute('''select * from catering_sale''') results = cursor.fetchall() for row in results:     print(row) #关闭 cursor.close() db.commit() db.close()

知识点扩展:

数据库连接池

数据库的连接是昂贵的,一个连接要经过TCP三次握手,四次挥手,而且一台计算机的最大线程数也是有限的

数据库连接池技术就是先创建好连接,再直接拿出来使用

import mysql.connector,mysql.connector.pooling config={ "host": "localhost", "port": "3306", "user": "root", "password": "password", "database": "demo" } try: pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5) con=pool.get_connection() con.start_transaction() cursor = con.cursor() sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);" cursor.execute(sql, (70, "SALES", "HUBAI")) con.commit() except Exception as e: if "con" in dir(): con.rollback() print(e) # do not need to close con

感谢你能够认真阅读完这篇文章,希望小编分享python将数据插入数据库的案例分析内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。