一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Pandas 操作MySQL!

 asaser 2022-09-17 發(fā)布于四川

公眾號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

本文介紹的是如何使用Pandas來操作MySQL數(shù)據(jù)庫。主要是包含查詢MySQL中的數(shù)據(jù),以及如何往數(shù)據(jù)庫中寫入數(shù)據(jù)。

圖片

先安裝兩個庫:

  • pymysql
  • sqlalchemy
pip install pymysql
pip install sqlalchemy

本地數(shù)據(jù)庫

查看一個本地數(shù)據(jù)庫中某個表的數(shù)據(jù)。這份數(shù)據(jù)是《MySQL經(jīng)典50題》的一個表之一:

《MySQL經(jīng)典50題》Pandas版本!

《SQL必知必會》萬字精華!

MySQL必須掌握4種語言!

面試必備:SQL排名和窗口函數(shù)

圖片

部分習(xí)題答案:

圖片
圖片
mysql -u root -p   -- 安裝mysql,進入數(shù)據(jù)庫輸入暗文密碼

show databases;  -- 顯示全部數(shù)據(jù)庫
use test;  -- 使用某個數(shù)據(jù)庫
show tables;  -- 查看數(shù)據(jù)庫下的全部表
select * from Student;  -- 查看某個表的全部內(nèi)容
圖片

操作MySQL

連接MySQL

以pymysql模塊為例,講解如何連接數(shù)據(jù)庫。

In [1]:

import pandas as pd

import pymysql
from sqlalchemy import create_engine

In [2]:

connection = pymysql.connect(
  host='127.0.0.1',  # 本機ip地址
  port=3306,  # mysql默認端口號
  user='root',  # 用戶名
  password='password',  # 密碼
  charset='utf8'# 字符集
  db='test'  # 數(shù)據(jù)庫
)

cur = connection.cursor() # 建立游標
cur

Out[2]:

<pymysql.cursors.Cursor at 0x11ddc1190>

connect()方法常用的參數(shù):

connect() 常用參數(shù)說明
host主機ip
user用戶名
password密碼
database數(shù)據(jù)庫
port端口號
charset字符集

調(diào)用 cursor() 方法即可返回一個新的游標對象,在連接沒有關(guān)閉之前,游標對象可以反復(fù)使用

執(zhí)行sql查詢語句

In [3]:

sql='''  # 待執(zhí)行的sql語句
select * from Student;
'''


# 執(zhí)行sql語句
cur.execute(sql)  

Out[3]:

8

In [4]:

cur

結(jié)果表明是個游標對象:

Out[4]:

<pymysql.cursors.Cursor at 0x11ddc1190>

In [5]:

cur.description

主要返回游標的屬性信息,官網(wǎng)的描述為:

圖片

Out[5]:

(('s_id', 253, None, 20, 20, 0, False),
 ('s_name', 253, None, 20, 20, 0, True),
 ('s_birth', 253, None, 20, 20, 0, True),
 ('s_sex', 253, None, 20, 20, 0, True))

In [6]:

# 列名
columns = [col[0for col in  cur.description]
columns

Out[6]:

['s_id''s_name''s_birth''s_sex']

游標使用

下圖顯示的是如何取出一條或者多條數(shù)據(jù)(按照順序查詢)

圖片

通過游標獲取全部的數(shù)據(jù):

圖片

fetch相關(guān)的函數(shù)都是獲取結(jié)果集中剩下的數(shù)據(jù),多次調(diào)用的時候只會從剩余數(shù)據(jù)中查詢:

圖片

當(dāng)?shù)诙握{(diào)用的時候結(jié)果就是空集。

通過游標獲取查詢的結(jié)果集的特點:

  1. 可以獲取1條、多條和全部數(shù)據(jù)
  2. 在獲取數(shù)據(jù)的時候是按照順序讀取的
  3. fetchall函數(shù)返回剩下的所有行
    • 如果是末尾,則返回空元組;
    • 否則返回一個元組,其元素是每一行的記錄封裝的一個元組

轉(zhuǎn)成DataFrame

圖片
圖片
# 列名
columns = [col[0for col in  cur.description]

# 數(shù)據(jù)集合
data = []
for i in cur.fetchall():
    data.append(i)
    
df = pd.DataFrame(data,columns=columns)

保存成CSV數(shù)據(jù)

圖片

SQL插入數(shù)據(jù)

往MySQL數(shù)據(jù)庫中插入數(shù)據(jù):

import pandas as pd

import pymysql
from sqlalchemy import create_engine

connection = pymysql.connect(
  host='127.0.0.1',  # 本機ip地址
  port=3306,  # mysql默認端口號
  user='root',  # 用戶名
  password='11112222',  # 密碼
  charset='utf8'# 字符集
  db='test'  # 數(shù)據(jù)庫
)

cur = connection.cursor() # 建立游標

# 待執(zhí)行SQL語句
sql='''  
insert into test.Student(s_id, s_name, s_birth, s_sex) values('09','吳越','1998-08-08','男')
'''


# 執(zhí)行sql語句
cur.execute(sql)  

很關(guān)鍵一步,要記得提交,這樣最終才會寫入數(shù)據(jù)庫:

connection.commit()
圖片

執(zhí)行SQL刪除語句

圖片
圖片

使用完之后記得關(guān)閉連接:

connection.close()

使用sqlalchemy

第二種常用的方法是通過sqlalchemy來連接數(shù)據(jù)庫:

連接數(shù)據(jù)庫

import pandas as pd
from sqlalchemy import create_engine

# 依次填寫MySQL的用戶名、密碼、IP地址、端口、數(shù)據(jù)庫名
# create_engine('數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動://數(shù)據(jù)庫用戶名:數(shù)據(jù)庫密碼@IP地址:端口/數(shù)據(jù)庫',其他參數(shù))
engine = create_engine('mysql+pymysql://root:password@localhost:3306/test')

查詢語句1

圖片

查詢語句2

圖片

寫入數(shù)據(jù)

Pandas中的DataFrame寫入新的表testdf中:

圖片
show tables;
圖片

使用read_sql讀取

使用Pandas自帶的read_sql函數(shù)能夠自行讀取數(shù)據(jù),讀取上面創(chuàng)建的數(shù)據(jù).

官網(wǎng):https://pandas./docs/reference/api/pandas.read_sql.html

import pandas as pd
from sqlalchemy import create_engine

# 依次填寫MySQL的用戶名、密碼、IP地址、端口、數(shù)據(jù)庫名
engine = create_engine('mysql+pymysql://root:password@localhost:3306/test')
# sql語句
sql4 = 'select * from testdf;'
df4 = pd.read_sql(sql4, engine)
圖片

圖片

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩特级黄片免费观看| 91人妻人人澡人人人人精品| 亚洲一区二区精品免费| 久久这里只有精品中文字幕| 激情综合五月开心久久| 亚洲欧美日韩熟女第一页| 欧美熟妇一区二区在线| 中文字幕有码视频熟女| 成人精品网一区二区三区| 粉嫩国产一区二区三区在线| 久久福利视频在线观看| 成人区人妻精品一区二区三区 | 亚洲精品成人福利在线| 久久亚洲午夜精品毛片| 精品视频一区二区不卡| 中字幕一区二区三区久久蜜桃| 国产精品刮毛视频不卡| 国产精品日韩欧美第一页| 欧洲偷拍视频中文字幕| 亚洲二区欧美一区二区 | 中文字幕日产乱码一区二区| 香蕉久久夜色精品国产尤物| 丰满熟女少妇一区二区三区| 五月婷婷亚洲综合一区| 国产日韩欧美专区一区| 中文字幕亚洲在线一区| 好吊视频有精品永久免费| 午夜福利视频偷拍91| 日韩人妻av中文字幕| 国产精品流白浆无遮挡| 亚洲精品小视频在线观看| 成人国产激情福利久久| 国语对白刺激高潮在线视频| 老司机这里只有精品视频| 国产精品一区二区三区日韩av | 男人操女人下面国产剧情| 中文字幕亚洲在线一区| 91国内视频一区二区三区| 欧美大粗爽一区二区三区| 国产精品美女午夜福利| 神马午夜福利一区二区|