我尝试从我的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了解详情。
我做错了什么?这是一个错误吗?
答案 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。