J'importe des données d'une base de données MySQL dans un bloc de données Pandas). L'extrait suivant est le code que j'utilise:
import mysql.connector as sql
import pandas as pd
db_connection = sql.connect(Host='hostname', database='db_name', user='username', password='password')
db_cursor = db_connection.cursor()
db_cursor.execute('SELECT * FROM table_name')
table_rows = db_cursor.fetchall()
df = pd.DataFrame(table_rows)
Lorsque j'imprime le bloc de données, il représente correctement les données, mais ma question est la suivante: est-il possible de conserver les noms de colonne? Voici un exemple de sortie:
0 1 2 3 4 5 6 7 8
0 :ID[giA0CqQcx+(9kbuSKV== NaN NaN None None None None None None
1 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
2 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
3 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
4 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
Ce que je voudrais faire est de garder le nom de colonne, qui remplacerait les index de colonne pandas. Par exemple, au lieu d’avoir 0, le nom de colonne serait: "First_column" comme dans MySQL Existe-t-il un moyen plus efficace d’importer des données de MySQL dans un bloc de données Pandas que le mien)?
Messieurs, il serait beaucoup plus efficace d’utiliser pandas pour lire les données de votre serveur MySQL:
from sqlalchemy import create_engine
import pymysql
db_connection_str = 'mysql+pymysql://mysql_user:mysql_password@mysql_Host/mysql_db'
db_connection = create_engine(db_connection_str)
df = pd.read_sql('SELECT * FROM table_name', con=db_connection)
cela devrait également prendre en charge les noms de colonne ...