¿Cómo convertir pandas DataFrame en SQL en Python?

 pip install sqlalchemy 

Es necesario crear un marco de datos de pandas para continuar.

Python3

# import pandas library
import pandas as pd
 
# create a dataframe
# object from dictionary
dataset = pd.DataFrame({'Names':['Abhinav','Aryan',
                                 'Manthan'],
                        'DOB' : ['10/01/2009','24/03/2009',
                                '28/02/2009']})
# show the dataframe
print(dataset)

Producción :

     Names         DOB
0  Abhinav  10/01/2009
1    Aryan  24/03/2009
2  Manthan  28/02/2009

Después de crear el conjunto de datos, necesitamos conectar el marco de datos al soporte de la base de datos que se proporciona para los objetos sqlite3.Connection. 

Python3

#importing sql library
from sqlalchemy import create_engine
 
# create a reference
# for sql library
engine = create_engine('sqlite://',
                       echo = False)
 
# attach the data frame to the sql
# with a name of the table
# as "Employee_Data"
dataset.to_sql('Employee_Data',
               con = engine)
 
# show the complete data
# from Employee_Data table
print(engine.execute("SELECT * FROM Employee_Data").fetchall())

Producción :

[(0, 'Abhinav', '10/01/2009'), (1, 'Aryan', '24/03/2009'), 
(2, 'Manthan', '28/02/2009')]

Después de agregar los datos a la base de datos, los podemos ver en forma de registros. Los datos también se pueden agregar a la base de datos creada anteriormente como se muestra a continuación:

Python3

# Create a dataframe
# object from dictionary
df1 = pd.DataFrame({'Names' : ['Sonia', 'Priya'],
                    'DOB':['18/10/2009','14/06/2009']})
 
# appending new data frame
# to existing data frame
df1.to_sql('Employee_Data',
           con = engine,
           if_exists = 'append')
 
# run a sql query
print(engine.execute("SELECT * FROM Employee_Data").fetchall())

Producción :

[(0, 'Abhinav', '10/01/2009'), (1, 'Aryan', '24/03/2009'),
 (2, 'Manthan', '28/02/2009'), (0, 'Sonia', '18/10/2009'),
  (1, 'Priya', '14/06/2009')]

Como se entiende del ejemplo anterior, aunque se agregan datos, la indexación nuevamente comenzó desde 0 solo cuando se agrega un nuevo marco de datos. Un marco de datos se puede transferir a la base de datos SQL, de la misma manera que el marco de datos también se puede leer desde la base de datos SQL . el tipo de retorno de read_sql es marco de datos. 

Python3

# reading the sql database
# with index "Names"
df2 = pd.read_sql('Employee_Data',
                  con = engine,
                  index_col = 'Names',
                  parse_dates = ['DOB'])
# show the dataframe
print(df2)
 
# print new line
print()
 
# show the type of df2
print(type(df2))

Producción :   

 id        DOB
Names               
Sonia   0 2009-10-18
Priya   1 2009-06-14

también podemos acceder a una columna en particular en una base de datos en lugar de a toda la tabla. 

Python3

# acccesing only a particular
# column from the database
df3 = pd.read_sql('Employee_Data',
                  con = engine,
                  columns = ["Names"])
# show the data
print(df3)

Producción : 

Names
0  Sonia
1  Priya

Si queremos tener los datos en la base de datos en forma de lista, eso es posible. 

Python3

# get a particular column
# from a database in the
# form of list
df4 = pd.read_sql('Employee_Data',
                  con = engine,
                  index_col = 'Names',
                  columns = ["Names"])
# show the data
print(df4)

Producción :

Empty DataFrame
Columns: []
Index: [Sonia, Priya]

Python3

# run a sql query in the database
# and store result in a dataframe
df5 = pd.read_sql_query('Select DOB from Employee_Data',
                        con = engine,
                        parse_dates = ['DOB'])
# show the dataframe
print(df5)

Producción : 

   DOB
0 2009-10-18
1 2009-06-14

Publicación traducida automáticamente

Artículo escrito por parshavnahta97 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *