Python操作MySQL MongoDB Oracle三大数据库深入对比
作者:数据分析与统计学之美 发布时间:2024-01-13 21:48:00
作为数据分析师,掌握一门数据库语言,是很有必要的。
今天黄同学就带着大家学习两个关系型数据库MySQL、Oracle,了解一个非关系数据库MongoDB。
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://huang-tong-xue.blog.csdn.net/article/details/120930905
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 基于循环神经网络(RNN)的古诗生成器,具体内容如下之前在手机百度上看到有个“为你写诗”功能,能够随机生成古诗,当时感觉很酷炫= =在学习了
- 最近在做个大数据量的录入,为了方便客户输入,需要通过方向键来移动到输入框中,本代码仅供学习、研究,请勿用于其它用途:D下面贴的代码只是贴出来
- 注意,一般官方接口都带有可导功能,如果你实现的层不具有可导功能,就需要自己实现梯度的反向传递。官方Linear层:class Linear(
- django上线后,需要把setting.py文件的debug=True改为False,以防暴露代码报错问题。因为我项目用到css的地方只有
- 本文实例讲述了Python带动态参数功能的sqlite工具类。分享给大家供大家参考,具体如下:最近在弄sqlite和python在网上参考各
- Function closeUBB(strContent) '*************************
- 1、目录操作1.1、获取当前目录# coding:utf-8import os# 获取当前工作目录(绝对路径)print(os.getcwd
- 本文实例讲述了Python实现备份MySQL数据库的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env python# -*
- 在第一部分和第二部分中我们分别介绍了改善网站性能中页面内容和服务器的几条守则,除此之外,JavaScript和CSS也是我们页
- 使用python编写了共六种图像增强算法:1)基于直方图均衡化2)基于拉普拉斯算子3)基于对数变换4)基于伽马变换5)限制对比度自适应直方图
- 根据SalesOrderID排序,取第16-18行这3条记录。方法一:(最常用的分页代码, top / not in)SELECT &nbs
- 我们经常会看到后缀名为.pt, .pth, .pkl的pytorch模型文件,这几种模型文件在格式上有什么区别吗?其实它们并不是在格式上有区
- ChatGPT 是 OpenAI 开发的 GPT(Generative Pre-trained Transformer)语言模型的变体。它是
- <!--#include file="admin_Checkuser.asp"--> <%
- 我的代码的哪些部分运行时间最长、内存最多?我怎样才能找到需要改进的地方?”在开发过程中,我很确定我们大多数人都会想知道这
- 目的对字符串的每个字符进行处理,其实每个字符(Char)就是一个长度为1的字符串。方法1.使用内建函数list()>>>
- 在TensorFlow中,tf.train.exponential_decay函数实现了指数衰减学习率,通过这个函数,可以先使用较大的学习率
- 本文用python写了一个会员管理系统,供大家参考,具体内容如下:"""后台管理员前台会员信息系统1.后台管理
- 问题:我想每日从数据库里导出一些数据,内容基本上都是一样的,只是时间不同,比如导出一张表wjzcreate table wjz(id int
- 引言之前松哥写过一个 MySQL 系列,但是当时是基于 MySQL5.7 的,最近有空在看 MySQL8 的文档,发现和 MySQL5.7