溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python將數(shù)據(jù)插入數(shù)據(jù)庫的案例分析

發(fā)布時間:2020-08-17 10:43:03 來源:億速云 閱讀:171 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了python將數(shù)據(jù)插入數(shù)據(jù)庫的案例分析,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

python將數(shù)據(jù)插入數(shù)據(jù)庫的方法:

  • 首先讀入數(shù)據(jù)并建立數(shù)據(jù)庫連接;
  • 然后創(chuàng)建數(shù)據(jù)庫;
  • 接著執(zhí)行插入數(shù)據(jù)語句,迭代讀取每行數(shù)據(jù);
  • 最后關(guān)閉數(shù)據(jù)庫連接即可。

比如現(xiàn)在我們要將如下Excel數(shù)據(jù)表格插入到MySQL數(shù)據(jù)庫中,該如何實(shí)現(xiàn)呢?

python將數(shù)據(jù)插入數(shù)據(jù)庫的案例分析

實(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í)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI