作為資料分析師,掌握一門資料庫語言,是很有必要的,
今天黃同學就帶著大家學習兩個關系型資料庫MySQL、Oracle,了解一個非關系資料庫MongoDB,
對于資料分析師來說,學習資料庫最重要的就是學習它們的查詢功能,這篇文章就以這個為切入點,為大家講述如何用Python操作這3個資料庫,

1. Python操作Oracle資料庫
這一部分的難點在于:環境配置有點繁瑣,不用擔心,我為大家寫了一篇關于Oracle環境配置的文章,
Python操作Oracle使用的是cx_Oracle庫,需要我們使用如下命令提前安裝:
pip insatll cx_Oracle
① Python鏈接Oracle服務器的3種方式
# ① 用戶名、密碼和監聽寫在一起
import cx_Oracle
db = cx_Oracle.connect('scott/a123456@DESKTOP-V4LKB10:1521/orcl')
# ② 用戶名、密碼和監聽分開寫
import cx_Oracle
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
# ③ 配置監聽并連接
import cx_Oracle
moniter = cx_Oracle.makedsn('192.168.2.1',1521,'orcl')
db = cx_Oracle.connect('scott','a123456',moniter)
② Python怎么獲取Oracle中的資料?
這里有三種常用的方法,分別為大家進行介紹,
Ⅰ fetchone():一次獲取一條記錄;
import cx_Oracle
# 注意:一定要加下面這兩行代碼,負責會中文亂碼;
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor()
cursor.execute('select count(*) from emp1')
aa = cursor.fetchone()
print(aa)
cursor.execute('select ename,deptno,sal from emp1')
for i in range(aa[0]):
a,b,c = cursor.fetchone()
d = "我的名字叫{},所在部門是{},工資是{}美元".format(a,b,c)
display(d)
db.close()
結果如下:

Ⅱ fetchall():一次獲取所有記錄;
import cx_Oracle
# 注意:一定要加下面這兩行代碼,負責會中文亂碼;
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor()
cursor.execute('select ename,deptno,sal from emp1')
aa = cursor.fetchall()
# print(aa)
for a,b,c in aa:
d = "我的名字叫{},所在部門是{},工資是{}美元".format(a,b,c)
display(d)
db.close()
結果如下:

Ⅲ 使用pandas中的read_sql()方法,將提取到的資料直接轉化為DataFrame進行操作;
import cx_Oracle
import pandas as pd
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor()
df1 = pd.read_sql("select * from emp where deptno=20",db)
display(df1)
df2 = pd.read_sql("select * from emp where deptno=30",db)
display(df2)
結果如下:

2. Python操作MySQL資料庫
MySQL資料庫應該是國內應用最多的資料庫,大多數公司一般都是使用的該資料庫,這也就是很多學生在畢業之前都會選擇學習該資料庫知識,用于面試,
Python操作MySQL使用的是cx_Oracle庫,需要我們使用如下命令提前安裝:
pip insatll pymysql
更多細節參考:Python操作Oracle詳解!
① Python鏈接MySQL服務器
import pymysql
db = pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='spiders',charset=' utf8')
這里面有六個引數,需要為大家一一介紹一下:
- 引數host:mysql服務器所在的主機的ip;
- 引數user:用戶名;
- 引數password:密碼;
- 引數port:連接的mysql主機的埠,默認是3306;
- 引數db:連接的資料庫名;
- 引數charset:當讀取資料出現中文會亂碼的時候,需要我們設定一下編碼;我們使用python操作資料庫的時候,那么python就相當于是client,我們是用這個client來操作mysql的server服務器,python3默認采用的utf8字符集,我的mysql服務器默認采用latin1字符集,因此mysql中創建的每張表,都是建表的時候加了utf8編碼的,因此這里設定的應該就是connection連接器的編碼;
② Python怎么獲取MySQL中的資料?
Ⅰ fetchone():一次獲取一條記錄;
import pymysql
db = pymysql.connect(host='localhost',user='root',db='huangwei',password='123456',port=3306,charset='utf8')
cursor = db.cursor()
cursor.execute('select count(*) from person')
aa = cursor.fetchone()
print(aa)
cursor.execute('select name,age from person')
for i in range(aa[0]):
a,b = cursor.fetchone()
c = "我的名字叫{},今年{}歲".format(a,b)
display(c)
db.close()
結果如下:

Ⅱ fetchall():一次獲取所有記錄;
import pymysql
db = pymysql.connect(host='localhost',user='root',db='huangwei',password='123456',port=3306,charset='utf8')
cursor = db.cursor()
cursor.execute('select name,age from person')
aa = cursor.fetchall()
# print(aa)
for a,b in aa:
c = "我的名字叫{},今年{}歲".format(a,b)
display(c)
db.close()
結果如下:

Ⅲ 使用pandas中的read_sql()方法,將提取到的資料直接轉化為DataFrame進行操作;
import pymysql
import pandas as pd
db = pymysql.connect(host='localhost',user='root',db='huangwei',password='123456',port=3306,charset='utf8')
cursor = db.cursor()
df1 = pd.read_sql("select * from student where ssex='男'",db)
display(df1)
df2 = pd.read_sql("select * from student where ssex='女'",db)
display(df2)
結果如下:

3. Python操作MongoDB資料庫
這一部分主要帶大家對比學習:關系型資料和非關系型資料庫的不同之處,咱們了解一下即可,不必過深研究,因為資料分析師基本不會使用這種資料庫,
Python操作MongoDB使用的是pymongo庫,需要我們使用如下命令提前安裝:
pip insatll pymongo
更多細節參考:Python操作MongoDB詳解!
① Python鏈接MongoDB服務器
from pymongo import MongoClient
conn = MongoClient("localhost",27017)
② Python怎么獲取MongoDB中的資料?
Ⅰ 查詢部分檔案;
res = collection.find({"age": {"$gte": 19}})
for row in res:
print(row)
Ⅱ 查詢所有檔案;
res = collection.find()
for row in res:
print(row)
Ⅲ 統計查詢;
res = collection.find().count()
print(res)
Ⅳ 根據 id 查詢;
這里需要引入第三方庫,
from bson.objectid import ObjectId
res = collection.find({"_id":ObjectId("5cc506289e1d88c95465488e")})
print(res[0])
Ⅴ 升序排序;
res = collection.find().sort("age")
for row in res:
print(row)
Ⅵ 降序排序;
這里也需要引入第三方庫,
import pymongo
res = collection.find().sort("age",pymongo.DESCENDING)
for row in res:
print(row)
Ⅶ 分頁查詢
res = collection.find().limit(3).skip(5)
for row in res:
print(row)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/336247.html
標籤:python
上一篇:【實用教程】手把手教程,一文學會使用Sublime搭建輕量級的C語言gcc編譯運行環境和Python運行環境(含所有配置流程及腳本)
