Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Read data from pyodbc to pandas

I am querying a SQL database and I want to use pandas to process the data. However, I am not sure how to move the data. Below is my input and output.

import pyodbc import pandas from pandas import DataFrame  cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\users\bartogre\desktop\CorpRentalPivot1.accdb;UID="";PWD="";') crsr = cnxn.cursor() for table_name in crsr.tables(tableType='TABLE'):     print(table_name) cursor = cnxn.cursor() sql = "Select sum(CYTM), sum(PYTM), BRAND From data Group By BRAND" cursor.execute(sql) for data in cursor.fetchall():     print (data) 

('C:\\users\\bartogre\\desktop\\CorpRentalPivot1.accdb', None, 'Data', 'TABLE', None) ('C:\\users\\bartogre\\desktop\\CorpRentalPivot1.accdb', None, 'SFDB', 'TABLE', None) (Decimal('78071898.71'), Decimal('82192672.29'), 'A') (Decimal('12120663.79'), Decimal('13278814.52'), 'B') 
like image 667
polonius11 Avatar asked Oct 03 '16 16:10

polonius11


1 Answers

A shorter and more concise answer

import pyodbc import pandas as pd  cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'                       r'DBQ=C:\users\bartogre\desktop\data.mdb;') sql = "Select sum(CYTM), sum(PYTM), BRAND From data Group By BRAND" data = pd.read_sql(sql,cnxn)  # without parameters [non-prepared statement]  # with a prepared statement, use list/tuple/dictionary of parameters depending on DB #data = pd.read_sql(sql=sql, con=cnxn, params=query_params)  
like image 79
Andres Avatar answered Sep 25 '22 07:09

Andres