MySQL、MongoDB、およびOracleデータベースでのPython操作の詳細な比較!

データアナリストとして、データベース言語を習得する必要があります。

今日、Huangは、MySQLとOracleの2つのリレーショナルデータベースについて学び、非リレーショナルデータベースのMongoDBについて学びます。

データアナリストにとって、データベースについて学ぶ最も重要なことは、データベースのクエリ機能を学ぶことです。この記事では、これをエントリポイントとして取り上げ、Pythonを使用してこれら3つのデータベースを操作する方法について説明します。
ここに画像の説明を挿入

1.PythonはOracleデータベースを操作します

この部分の難しさは、環境構成が少し面倒であるということです。心配しないでください。Oracle環境の構成に関する記事を作成しました。

Pythonは、cx_Oracleライブラリを使用して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のデータを取得しますか?

一般的に使用される方法は3つあり、それぞれを紹介します。

Ⅰfetchone():一度に1つのレコードをフェッチします。
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()

結果は次のとおりです。
ここに画像の説明を挿入

Ⅲパンダの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.MySQLデータベースを操作するPython

MySQLデータベースは、中国で最も広く使用されているデータベースである必要があります。このデータベースは通常、ほとんどの企業で使用されています。これは、多くの学生が卒業前に面接のためにデータベースの知識を学ぶことを選択することを意味します。

Pythonはcx_Oracleライブラリを使用してMySQLを操作します。次のコマンドを使用して、事前にインストールする必要があります。

pip insatll pymysql

詳細については、Python操作Oracleの詳細な説明を参照してください。

①PythonリンクMySQLサーバー

import pymysql 

db = pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='spiders',charset=' utf8')

ここには6つのパラメーターがあり、それらを1つずつ紹介する必要があります。

  • パラメータhost:mysqlサーバーが配置されているホストのIP。
  • パラメータuser:username;
  • パラメータpassword:password;
  • パラメータport:接続されたmysqlホストのポート。デフォルトは3306です。
  • パラメータdb:接続のデータベース名。
  • パラメータcharset:データの読み取りが中国語で文字化けしているように見える場合は、エンコーディングを設定する必要があります。pythonを使用してデータベースを操作する場合、pythonはクライアントと同等であり、このクライアントを使用してmysqlサーバーサーバーを操作します。python3のデフォルトはutf8文字セット。私のmysqlサーバーはデフォルトでlatin1文字セットを使用するため、mysqlで作成される各テーブルは、テーブルの作成時にutf8でエンコードされるため、ここで設定するコードは接続コネクタである必要があります。

②PythonはどのようにしてMySQLのデータを取得しますか?

Ⅰfetchone():一度に1つのレコードをフェッチします。
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()

結果は次のとおりです。
ここに画像の説明を挿入

Ⅲパンダの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はpymongoライブラリを使用してMongoDBを操作します。次のコマンドを使用して、事前にインストールする必要があります。

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)
VIIページネーションクエリ
res = collection.find().limit(3).skip(5)
for row in res:
	print(row)

おすすめ

転載: blog.csdn.net/weixin_41261833/article/details/120930905