python se connecte à la base de données mysql et lit les données
1. Installez le package pymysql
pip install pymysql
Remarque:
- MySQLdb ne prend en charge que python2, pymysql prend en charge python3
2. Connectez les données
import pymysql
import pandas as pd
from pandas import DataFrame as df
conn = pymysql.Connect(
host = 'IP地址',
port = 端口号,
user = '用户名',
passwd = '用户密码',
db = '数据库名称',
charset = 'utf8'
)
Remarque:
- Afficher l'adresse IP locale: entrée cmd: ipconfig, adresse IPv4
- L'adresse du serveur hôte dans le paramètre pymysql.Connect, cette machine peut être "localhost"
3. Lisez les données
(1) Utilisez read_sql pour lire les données
sql = 'select * from testa'
data = pd.read_sql(sql, conn)
(2) Utilisez le curseur pour lire les données
sql = 'select * from testa'
cur = conn.cursor()
try: # 使用异常处理,以防程序无法正常运行
cur.execute(sql)
data = df(cur.fetchall(), columns = [col[0] for col in cur.description])
except Exception as e:
conn.rollback() # 发生错误时回滚
print('事务处理失败', e)
else:
# conn.commit() # 事务提交
print('事务处理成功', cur.rowcount)
cur.close()
Remarque:
-
La différence entre read_sql et curseur curseur:
read_sql: ne peut exécuter que des données de requête
curseur de curseur: peut exécuter une requête, insérer, mettre à jour, supprimer et d'autres opérations -
cur.execute (sql):
exécuter des opérations de base de données spécifiques -
cur.fetchone ():
récupère une seule donnée
cur.fetchmany (3):
récupère les 3 premières données
cur.fetchall ():
récupère toutes les données -
Les noms de champ sont inclus dans les résultats de la requête:
# 法1: cur = conn.cursor(cursor = pymysql.cursors.DictCursor) # 设置成DictCursor,结果包含字段名称 cur.execute(sql) data = df(cur.fetchall()) # 法2: cur = conn.cursor() cur.execute(sql) data = df(cur.fetchall(),columns = [col[0] for col in cur.description])
-
conn.commit ():
cette instruction est requise pour les opérations telles que l'insertion, la mise à jour et la suppression; elle n'est pas requise pour l'interrogation, la création de bases de données et de tables de données -
cur.rowcount:
renvoie le nombre d'opérations effectuées
4. Fermez la base de données
conn.close()