【发布时间】:2015-12-27 03:02:42
【问题描述】:
在使用数据库 decimal 数据类型时,我遇到了 Pandas read_sql_query() 函数的问题。在使用 varchar 或 integer 类型时,我对下面的相同代码没有任何问题。
版本信息:
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()...同样的错误。