我尝试从我的 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了解更多详情。
我做错了什么?这是错误吗?
最佳答案
好的,所以看github看来你的问题已经解决了。为了记录在案,让我简短地总结一下发生的事情。
我们从 #7396 中得知,pandas 正在自省(introspection)所有 每次每个 read_sql_table 调用的表。
另一件事是您的数据库包含一个表,该表的一列类型被 sqlite 报告为“INT(4)”。
SqlAlchemy(由 pandas 在后台使用)sqlite 方言 interprets the "(4)" part as an argument to be passed to its type constructor .但是 sqlalchemy.sql.sqltypes.INTEGER 的构造函数不接受任何参数并且 causes a warning并有效地忽略这些参数,将 INT(4) 视为 INT。
关于python - SA警告 : Could not instantiate type <class 'sqlalchemy.sql.sqltypes.INTEGER' > when I use sqlalchemy and pd. io.sql.read_sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24096330/