python - SA警告 : Could not instantiate type <class 'sqlalchemy.sql.sqltypes.INTEGER' > when I use sqlalchemy and pd. io.sql.read_sql

标签 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了解更多详情。

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

最佳答案

好的,所以看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/

相关文章:

python - pip:没有名为 _internal 的模块

python - 正确使用 psycopg2 序列化

python - 问 : Simple-Salesforce make a dynamic soql query

python - 将列求和为一个值

python - 对数据帧中的列执行 str.split 会返回SettingWithCopyWarning

python - Sqlalchemy One - 多一合一

python - 在 ffmpeg 中找不到选项

python - 将字典列表与数据框进行比较,显示缺失值

python - sqlalchemy 中的多态自引用外键

python - 具有继承的 SQLAlchemy 类的一对一删除