SAWarning:当我使用sqlalchemy和pd.io.sql.read_sql </class>时,无法实例化类型<class'narlalchemy.sql.sqltypes.integer'=“”>

时间:2014-06-07 10:40:51

标签: python pandas sqlalchemy

我尝试从我的SQLite表中读取pandas DataFrame。当我运行下面的代码时

import pandas as pd
import sqlalchemy

dbname = "sqlite:////Users/leda/home/Magnetic_stars/SQLite/Magnetic_stars.sqlite"
engine = sqlalchemy.create_engine(dbname)
res = pd.io.sql.read_sql("SELECT * FROM Resolved;", engine)

我得到了SAWarning:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:860: SAWarning: Could not instantiate type <class 'sqlalchemy.sql.sqltypes.INTEGER'> with reflected arguments [u'4']; using no arguments.
 coltype = self._resolve_type_affinity(type_)
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:860: SAWarning: Could not instantiate type <class 'sqlalchemy.sql.sqltypes.INTEGER'> with reflected arguments [u'2']; using no arguments.
 coltype = self._resolve_type_affinity(type_)

请参阅我的issue on github了解详情。

我做错了什么?这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

好的,所以看github好像你的问题已经解决了。为了记录,让我简要总结一下发生的事情。

正如我们从#7396所知,pandas每次每个 read_sql_table调用都会反映所有表。

另一件事是你的数据库包含一个表,其中sqlite报告的类型列为“INT(4)”。

SqlAlchemy(由引擎盖下的熊猫使用)sqlite dialect interprets the "(4)" part as an argument to be passed to its type constructor。但是sqlalchemy.sql.sqltypes.INTEGER的构造函数不接受任何参数和causes a warning并且有效地忽略这些参数,将INT(4)视为INT。