Banco de Dados Python
Banco de Dados Python
DATA ANALYSIS
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 1/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 2/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 import pandas as pd
2 import sqlalchemy
Com essa biblioteca podemos criar a engine para fazer a conexão com
diversos bancos de dados como: MySQL, Oracle, SQL Server,
PostgreSQL entre outros.
SGDB: MySQL
Drive: pymysql
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 3/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Documentação do SQLAlchemy
https://docs.sqlalchemy.org/en/latest/core/engines.html
Criando a Conexão
1 engine = sqlalchemy.create_engine('mysql+pymysql://root:d
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 4/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Método: read_sql_table
1 df = pd.read_sql_table('employees',engine)
Listando os dados e informações dos atributos.
1 df.head()
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 5/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 df.info()
2
3 # Saída:
4 <class 'pandas.core.frame.DataFrame'>
5 RangeIndex: 300024 entries, 0 to 300023
6 Data columns (total 6 columns):
7 emp_no 300024 non-null int64
8 birth_date 300024 non-null datetime64[ns]
9 first_name 300024 non-null object
10 last_name 300024 non-null object
11 gender 300024 non-null object
12 hire_date 300024 non-null datetime64[ns]
13 dtypes: datetime64[ns](2), int64(1), object(3)
14 memory usage: 13.7+ MB
Lendo apenas algumas colunas da tabela.
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 6/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Método: read_sql_query
Com esse método podemos trazer os dados usando uma query SQL, ele
nos permite consultar uma ou diversas tabelas.
sql = String SQL Query que deverá ser executada para retornar o
conjunto de dados.
O mais e ciente é especi car os nomes das colunas que você deseja
consultar ou consumir.
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 7/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 df.head()
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 8/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 query = '''
2 SELECT emp.first_name,
3 emp.last_name,
4 emp.gender,
5 depar.dept_name as departament_name,
6 dept.from_date,
7 dept.to_date
8 FROM employees emp
9 INNER JOIN dept_emp dept
10 ON emp.emp_no = dept.emp_no
11 INNER JOIN departments depar
12 ON dept.dept_no = depar.dept_no;
13 '''
14
15 df = pd.read_sql_query(query,engine)
16 df.head()
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 9/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
um DataFrame.
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 10/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 SELECT emp.first_name,
2 emp.last_name,
3 emp.gender,
4 depar.dept_name as departament_name,
5 dept.from_date,
6 dept.to_date
7 FROM employees emp
8 INNER JOIN dept_emp dept
9 ON emp.emp_no = dept.emp_no
10 INNER JOIN departments depar
11 ON dept.dept_no = depar.dept_no
12 WHERE dept.from_date >= %(data_inicial)s AND to_date < %(
13 '''
14 df = pd.read_sql_query(query,
15 engine,
16 params={'data_inicial':"1990-01-22
17 'data_final':"1990-02-21"}
18 )
1 df.info()
2
3 # Saída:
4 <class 'pandas.core.frame.DataFrame'>
5 RangeIndex: 5 entries, 0 to 4
6 Data columns (total 6 columns):
7 first_name 5 non-null object
8 last_name 5 non-null object
9 gender 5 non-null object
10 departament_name 5 non-null object
11 from_date 5 non-null object
12 to_date 5 non-null object
13 dtypes: object(6)
14 memory usage: 368.0+ bytes
1 df.head(20)
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 11/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Método: read_sql
Faz o roteamento entre os métodos read_table e read_sql_query.
sql = String SQL Query que deverá ser executada para retornar o
conjunto de dados.
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 12/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 df = pd.read_sql("departments",engine)
2 df.head()
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 13/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Método: to_sql
1 df = pd.read_csv("automobile.csv")
2
3 df.head()
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 15/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 df.to_sql(
2 name = 'tb_automobile',
3 con = engine,
4 )
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 16/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
1 df.to_sql(
2 name = 'tb_automobile',
3 con = engine,
4 index = False,
5 if_exists ='append'
6 )
Além de dizer que não queremos uma coluna de index, vamos passar o
parâmetro if_exists = ‘append’ , isso quer dizer que se a tabela já existir
no banco esses dados serão acrescentados nessa mesma tabela.
Por padrão se você não informar esse parâmetro e a tabela já existir ele
irá retornar um erro, pois não é possível criar duas ou mais tabelas com
o mesmo nome.
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 17/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Conclusão:
Nesse artigo vimos como podemos nos conectar a um banco de dados,
fazer uma consulta e transformar esses resultados em um pandas
Dataframe para fazer diversas manipulações com as quais já estamos
acostumados, além disso mostramos como fazer o processo inverso
que foi transformar um Dataframe em uma tabela do banco.
Bom espero que você tenha gostado e que compartilhe esse conteúdo
com mais pessoas, caso tenha alguma dúvida deixe nós comentários
que te responderemos o mais rápido possível.
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 18/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
Artigos Relacionados
DATA ANALYSIS
Como conseguir
datasets de projetos
reais para usar no
seu portfólio
Ver mais
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 19/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 20/21
5/19/2020 Minerando Dados › Trabalhando com Banco de Dados SQL usando Python
https://minerandodados.com.br/trabalhando-com-banco-de-dados-sql-usando-python/ 21/21