Как считать данные из удаленной БД в DataFrame?
Вот скрипт, позволяющий обратиться к БД. K ней нужно подключиться с помощью строки соединения:
import pyodbc
driver = 'DRIVER={SQL Server}'
server = 'SERVER=111.000.00.00'
port = 'PORT=1433'
DB = 'DATABASE=testdb'
user = 'UID=me'
pw = 'PWD=pass'
conn_str = ';'.join([driver, server, port, DB, user, pw])
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
Как нужную таблицу testtable из testdb скопировать в DataFrame?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь методом pd.read_sql().
Пример:
import mssql
from sqlalchemy import create_engine
# pyodbc
engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')
# pymssql
# engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
qry = """select * from testtable"""
df = pd.read_sql(qry, engine)
UPDATE: самое сложное здесь это указать правильное значение для connection string при создании engine.
import urllib
params = urllib.parse.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)