pandas read_sql Импортирует NULL как 0 - PullRequest
0 голосов
/ 26 сентября 2019

Редактировать: Очевидно, мое соединение (PYODBC) читает в NULL как 0.Я хотел бы исправить это на «более высоком» уровне, так как я буду читать во многих файлах SQL.Я не могу найти ничего в документации, чтобы предотвратить это.Любые предложения?

Я импортирую файл / запрос SQL в виде строки, а затем использую pd.read_sql для запроса к моей базе данных.В SQL Server я могу выполнять вычисления между значениями NULL, что приводит к значению NULL, однако в Python эти ошибки выводятся из моего сценария.

Запрос выполнялся в SQL Server:

SELECT PurchaseOrderID, POTotalQtyVouched, NewColumn = PurchaseOrderID/POTotalQtyVouched FROM #POQtys;

Здесьмой желаемый вывод после выполнения запроса (который работает в SQL Server):

PurchaseOrderID    POTotalQtyVouched   NewColumn
NULL               NULL                NULL
007004             8                   875.5
008017             21                  381.761904761905
008478             NULL                NULL

Выполнение запроса в Python:

query = '''
...
[Other code defining #POQTYs]
...
SELECT PurchaseOrderID, POTotalQtyVouched, NewColumn = PurchaseOrderID/POTotalQtyVouched FROM #POQtys;

'''
conn = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
                      'Server=MSS-SL-SQL;'
                      'Database=TRACE DB;'
                      'Trusted_Connection=yes;')

df = pd.read_sql(query, conn)

Ошибка в Python:

DataError: ('22012', '[22012] [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Произошла ошибка деления на ноль. (8134) (SQLFetch)')

...