Ir ao conteúdo

Posts recomendados

Postado

Tenho um banco de dados gigantesco (não cabe em Excel) e eu queria importar (com Pandas) para o Jupyter Notebook. Naturalmente importo os arquivos em Excel (tanto xlsx quanto CSV) com o comando pd.read_excel("nome_do_arquivo.extensão") mas gostaria de importar um banco de dados em Acess onde o comando pd.read_acess("nome_do_arquivo.mdb") da erro (não sei se acess é a nomenclatura correta para o pandas). alguém sabe como faço pra importar esse banco de dados ou se devo converter em outro arquivo? Procurei em todo tipo de fórum/vídeo e não achei nada.image.thumb.png.b5cf1cc6966c38cb54370ec4d582b219.png

Postado

@Viktor Dun Faz a importação dos dados utilizando a biblioteca pyodbc.

 

Cria duas variáveis:

conexão: contendo a string de conexão.

query: a consulta SQL em si.

 

Daí você utiliza o método sql_read do pandas. Algo assim:

 

df = pd.read_sql(conexão, quero)

 

E por último fecha a conexão com conexão.close()

  • 1 ano depois...
Postado

import pyodbc as pyo

conn_string = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\romilson\Desktop\SDC AcademY 2022\Dados\Estados.accdb;')
cursor = conn.cursor()
cursor.execute('select * from Estados')
   
for tab in cursor.fetchall():
    print (tab)

 

 

dados = pd.read_sql(r'C:\Users\romilson\Desktop\SDC AcademY 2022\Dados\Estados.accdb')
print(dados.read())

 

TypeError Traceback (most recent call last) Input In [878], in <cell line: 1>() ----> 1 dados = pd.read_sql(r'C:\Users\romilson\Desktop\SDC AcademY 2022\Dados\Estados.accdb') 2 print(dados.read()) TypeError: read_sql() missing 1 required positional argument: 'con'

 

@Kleber Bispo Essa dica infelizmente não da certo. Fui na documentação pandas e não tem nenhuma informação. Ando pesquisando também pra resolver esse problema e não achei nenhum fórum que tenha algo falando sobre esse assunto. 

 

Postado

@lonan  A dica funciona sim, jovem. Seu código que não está certo.

Você está fazendo a conexão e a consulta com o pyodbc.
Depois você cria a variável dados que recebe o método read_sql do pandas e passa apenas o caminho do banco de dados e não passa a string de conexão.

 

O erro que o python informou mostra isso: TypeError Traceback (most recent call last) Input In [878], in <cell line: 1>() ----> 1 dados = pd.read_sql(r'C:\Users\romilson\Desktop\SDC AcademY 2022\Dados\Estados.accdb') 2 print(dados.read()) TypeError: read_sql() missing 1 required positional argument: 'con'

 

fiz dois testes e funcionaram. Atualiza a variável "caminho_do_arquivo" e o nome da tabela na consulta SQL:

 

 

Consulta só com pyodbc:

import pyodbc


driver = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}"
caminho_do_arquivo = "DBQ=.\\conexao_python_access.accdb"

string_de_conexao = driver + ";" + caminho_do_arquivo
consulta = ("SELECT * FROM Data")

conexao = pyodbc.connect(string_de_conexao)
cursor = conexao.cursor()
cursor.execute(consulta)

linhas = cursor.fetchall()

for linha in linhas:
    print(linha)

conexao.close()

 

 

Consulta com pyodbc e pandas:

import pyodbc
import pandas as pd

driver = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}"
caminho_do_arquivo = "DBQ=.\\conexao_python_access.accdb"

string_de_conexao = driver + ";" + caminho_do_arquivo
consulta = ("SELECT * FROM Data")

conexao = pyodbc.connect(string_de_conexao)
df = pd.read_sql(consulta, conexao)
print(df)

conexao.close()

 

 

Testa e depois chama se precisar de mais alguma ajuda!

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...