Python PYODBCОшибка с Postgres - PullRequest
0 голосов
/ 12 марта 2019

Я использую Python для извлечения данных из двух баз данных для их сравнения. Одним из них является сервер MS SQL (у меня нет спецификаций для этого сервера), а другим - PostgreSQL 9.6.10, работающий на сервере Red Hat 4.4.7-23. Я использую Python 3.5.2 в Ubuntu 3.13.0. Я использую LinuxODBC с драйверами с ODBC Driver 17 для SQL Server и PostgreSQL. Я использую pyodbc для соединений с БД.

Значения довольно большие (в триллионах долларов) и должны быть с точностью до копейки. Обе базы данных используют типы данных, способные хранить данные с такой точностью. Со стороны Postgres это числовой тип данных.

Запросы довольно простые:

conn = pyodbc.connect('DSN=MSSQL_Prod')
db1_totals = pd.read_sql_query("select d_date, sum(mon_val) as mon_val from sql_table1 group by d_date;", con=conn, coerce_float=False)
conn.close()

conn = pyodbc.connect('DSN=PG_Prod')
db2_totals = pd.read_sql_query("select d_date, sum(mon_val) as mon_val from pgsql_table1 group by d_date;", con=conn, coerce_float=False)
conn.close()

Запрос MS SQL работает без проблем. Мой запрос Postgres работает, если я запускаю его прямо на PG сервере. Тем не менее, когда я запрашиваю Postgres DB из Python, он возвращает: InvalidOperation: []

Для чего бы то ни было, я использовал Python, чтобы сначала поместить данные на Postgres.

Я видел некоторые сообщения о похожих проблемах с драйвером IBM Netezza, и мне было интересно, сталкивался ли кто-нибудь с этим Postgres или имел какое-либо представление о том, в чем может быть проблема.

Спасибо.

...