您好,登錄后才能下訂單哦!
這篇文章主要介紹了python將數(shù)據(jù)插入數(shù)據(jù)庫的案例分析,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
python將數(shù)據(jù)插入數(shù)據(jù)庫的方法:
比如現(xiàn)在我們要將如下Excel數(shù)據(jù)表格插入到MySQL數(shù)據(jù)庫中,該如何實(shí)現(xiàn)呢?
實(shí)現(xiàn)代碼:
#導(dǎo)入需要使用到的數(shù)據(jù)模塊 import pandas as pd import pymysql #讀入數(shù)據(jù) filepath = 'E:\_DataSet\catering_sale.xls' data = pd.read_excel(filepath) #建立數(shù)據(jù)庫連接 db = pymysql.connect('localhost','root','1234','python_analysis') #獲取游標(biāo)對象 cursor = db.cursor() #創(chuàng)建數(shù)據(jù)庫,如果數(shù)據(jù)庫已經(jīng)存在,注意主鍵不要重復(fù),否則出錯 try: cursor.execute('create table catering_sale(num int primary key,date datetime, sale float )') except: print('數(shù)據(jù)庫已存在!') #插入數(shù)據(jù)語句 query = """insert into catering_sale (num, date, sale) values (%s,%s,%s)""" #迭代讀取每行數(shù)據(jù) #values中元素有個類型的強(qiáng)制轉(zhuǎn)換,否則會出錯的 #應(yīng)該會有其他更合適的方式,可以進(jìn)一步了解 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) #關(guān)閉游標(biāo),提交,關(guān)閉數(shù)據(jù)庫連接 #如果沒有這些關(guān)閉操作,執(zhí)行后在數(shù)據(jù)庫中查看不到數(shù)據(jù) cursor.close() db.commit() db.close() #重新建立數(shù)據(jù)庫連接 db = pymysql.connect('localhost','root','1234','python_anylysis') cursor = db.cursor() #查詢數(shù)據(jù)庫并打印內(nèi)容 cursor.execute('''select * from catering_sale''') results = cursor.fetchall() for row in results: print(row) #關(guān)閉 cursor.close() db.commit() db.close()
知識點(diǎn)擴(kuò)展:
數(shù)據(jù)庫連接池
數(shù)據(jù)庫的連接是昂貴的,一個連接要經(jīng)過TCP三次握手,四次揮手,而且一臺計(jì)算機(jī)的最大線程數(shù)也是有限的
數(shù)據(jù)庫連接池技術(shù)就是先創(chuàng)建好連接,再直接拿出來使用
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
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python將數(shù)據(jù)插入數(shù)據(jù)庫的案例分析內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。