我在使用數據庫decimal
數據類型時遇到了Pandas read_sql_query()函數的問題。使用varchar
或integer
類型時,我對以下相同的代碼沒有問題。pandas - cdecimal.ConversionSyntax readOptional on read_sql_query()
版本信息:
CentOS 6.6
Python 2.7.10 :: Anaconda 2.3.0 (64-bit)
# packages in environment at /opt/anaconda:
pandas 0.16.2 np19py27_0
cdecimal 2.3 py27_0
pyodbc 3.0.10 py27_0
sqlalchemy 1.0.8 py27_0
下面是我的代碼降低儘可能複製錯誤。我也嘗試通過sqlalchemy並得到相同的錯誤。 (沒有爲Netezza公司沒有SQLAlchemy的引擎,因此它仍然需要依靠pyodbc。)
import pyodbc
import pandas as pd
connection = pyodbc.connect("Driver={NetezzaSQL};servername=nzserver;database=MASTER;username=USER_GUY;password=****")
sql = "select cast(0.0 as decimal(6,2)) as testing "
data = pd.io.sql.read_sql_query(sql, connection, index_col=None, coerce_float=True)
#Also tried this, same error
data = pd.io.sql.read_sql_query(sql, connection, index_col=None, coerce_float=False)
---------------------------------------------------------------------------
InvalidOperation Traceback (most recent call last)
<ipython-input-217-ba167303e6b2> in <module>()
1
----> 2 data = pd.io.sql.read_sql_query(sql, connection, index_col=None, coerce_float=True)
3 # InvalidOperation: [<class 'cdecimal.ConversionSyntax'>]
4
僅供參考,我也試圖與'read_sql()'...同樣的錯誤。 – joefromct