Python
July 9, 2022

Использование pyodbc для получения данных с ms sql server(draft)

Так исторически сложилось, что я получаю котировки из торгового терминала Quik в таблицу MS SQL Server. А различные манипуляции с этими данными совершаю в PostgreSQL. Для учебных целей (IRL я бы линкованный сервер PG настроил) я перекидываю данные с MS SQL Server в PostgreSQL, используя скрипт на python.

Для подключения в Windows к MS SQL Server и дальнейших манипуляций с данными используется библиотека pyodbc.

Далее код, там всё понятно и без комментариев.

import pyodbc
def db_connect(db: str, connection_string: str):
    if db == 'sql_server':
        cxn = pyodbc.connect(connection_string)
    elif db == 'pg':
        cxn = psycopg2.connect(connection_string)
    return cxn
def main():
    ms_sql_con_string = "DSN=mssql2012xe"
    ms_sql_conn = db_connect('sql_server', ms_sql_con_string)
    ms_sql_cur = ms_sql_conn.cursor()
    
    # Партии
    ms_sql_cur.execute("exec dbo.p_sel_quik_batch_all;")
    
    while True:
        res = ms_sql_cur.fetchmany(20)
        if not res:
            break
        for rw in res:
            # что-то делаем
            instr_short = rw[1]
            instr_code = rw[2]
            
    ms_sql_cur.close()
    ms_sql_conn.close()
   
if __name__ == '__main__':
    main()