[最も完全な] Python はデータベースに接続してデータをフェッチおよび書き込みます

データ分析を行う場合でも、リスク管理モデリングを行う場合でも、データベースからデータを取得したり、データベースにデータを書き込んだりすることは避けられません。この記事では、データベースに接続するさまざまな方法、および単一書き込みデータとバッチ書き込みデータについて整理します。すべてのコードはテストされて利用可能であり、実際に運用環境に適用され、この点で困難に遭遇したより多くの友人と共有されます。データ取得後の分析結果を関係者に定期的に送信したい場合は、「【乾物】Pythonを使って監視メールを毎日定期的に送信する」を参照してください。

  

1. データベースへの接続方法1(pymysql)

  
まず、データベースに接続する 1 つ目の方法について説明します。具体的なコードは次のとおりです。

import pymysql
import numpy as np 
import pandas as pd

#36数据库
conn = pymysql.connect(host='ip', user='用户名', passwd='密码', db='数据库名')
#建立连接,host中填mysql服务器所在的主机的ip,user中填为用户名,passwd中填密码,db中填数据库名
sql = ''' select * from  credit_approve_result limit 3'''
date = pd.read_sql_query(sql, conn)

主な考え方は、最初にライブラリをインポートし、次に IP、ユーザー名、パスワード、データベース名などの情報を入力して接続を確立することです。次に、データ クエリ用の SQL クエリ ステートメントを定義します。pymysql 関数について質問がある場合は、公式アカウント「Ali Yiyang's Code 」の歴史記事「データベースに接続するための Python の必要性の認識」を参照してください。
  
  

2. データベースへの接続方法2(create_engine)

  
次に、データベースに接続する 2 番目の方法を紹介します。具体的なコードは次のとおりです。

import pandas as pd 
from sqlalchemy import create_engine

conn = create_engine('mysql+pymysql://user:passwd@ip:3306/db',encoding='utf8')
#建立连接,user替换为用户名,passwd替换为密码,ip替换为mysql服务器所在的主机的ip,db中填数据库名
sql = ''' select * from  credit_approve_result limit 3'''
date = pd.read_sql_query(sql, conn)

主な考え方は、最初にライブラリをインポートし、次にユーザー名、パスワード、データベース名、およびその他の情報を入力して接続を確立することです。接続のデフォルト ポートは 3306 です。次に、データ クエリ用の SQL クエリ ステートメントを定義します。2 つの接続方法は非常に似ていますが、使用されるライブラリ、情報の入力形式が異なり、一般的な手順は同じであることがわかります。

  
  

3. データをデータベースにインポートする

  
データベースからデータを読み取ったところで、SQL フェッチの結果を新しいテーブルにインポートしてみましょう。具体的なコードは次のとおりです。

conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')
#建立连接,user替换为用户名,passwd替换为密码,ip替换为mysql服务器所在的主机的ip
date.to_sql("jlkj_cs", conn, if_exists='replace', index=False)

上記のコードは、テスト ライブラリの jlkj_cs テーブルに日付データをインポートするもので、このテーブルが以前に存在していた場合は、このテーブルを日付データに置き換えます。

  
  

4. 少量のデータを 1 行ずつ追加します

  

データのフェッチ、データの書き込み、データの追加のロジックを誰でもより明確に理解できるようにするためです。このセクションでは、前のセクションの内容を要約し、少量のデータを 1 行ずつ書き込むコード行を追加します。詳細は次のとおりです。

import pandas as pd
import pymysql.cursors
from sqlalchemy import create_engine

#读取数据
conn = create_engine('mysql+pymysql://user:passwd@ip:3306/temp_data_2',encoding='utf8')
jxb_sx_head3 = pd.read_sql('''select session_id, customerName from xb_policy_sxall limit 3''',conn)

#写入数据
conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')
jxb_sx_head3.to_sql("jlkj_cs", conn, if_exists='replace', index=False)

#单条插入数据
conn = pymysql.connect(host='ip',user = "用户名", passwd = "密码", db = "test")
cursor = conn.cursor()
cursor.executemany(
"insert into jlkj_cs values(%s, %s)",
[
('OT111', '张一'),
('OT112', '张二')
]
)
conn.commit()

#检查是否插入成功
conn = pymysql.connect(host='ip',user = "用户名", passwd = "密码", db = "test")
cs_add_date = pd.read_sql('''select * from jlkj_cs''',conn)
cs_add_date

答えが得られました:

写真

  
  

5. データの追加と一括書き込み

  
4 番目のセクションではデータを 1 つずつ書き込む方法を紹介しましたが、ここではデータ フレームをデータベースのテーブルに直接追加する方法を紹介します。具体的なコードは次のとおりです。

conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')
date_pl.to_sql(name='jlkj_cs', con=conn, if_exists='append', index=False, index_label=False)
cs_add_date2 = pd.read_sql('''select * from jlkj_cs''',conn)
cs_add_date2

答えが得られました:

、

date_pl のデータは、テーブルに書き込まれるデータと一致している必要があります。ここまで、データベースへの Python 接続によるデータのフェッチとデータの書き込みについて説明しました。必要な場合は、コードに従って、もう一度図を試してみてください。

グループへの期間限定無料アクセス】 Pythonの学習、Pythonで遊ぶ、リスク管理モデリング、人工知能、データ分析に関する募集情報、優れた記事、学習動画を提供するほか、学習や学習で遭遇した関連問題などの交流もできるグループです。仕事。必要な友人は WeChat ID 19967879837 を追加し、リスク管理モデリングなど、参加したいグループをメモする時間を追加できます。
  
あなたは興味があるかもしれません:
Python でピカチュウを描く
Python を使用してワードクラウドを描画するPython の
顔認識 - 私の目にはあなただけが映るPython は
美しい星空マップ (美しい背景) を描画します
Python の py2neo ライブラリを使用して neo4j を操作し、関連付けマップを構築するPython
ロマンス告白ソースコード集(愛、バラ、フォトウォール、星空の下での告白)

おすすめ

転載: blog.csdn.net/qq_32532663/article/details/132381264
おすすめ