【发布时间】:2018-08-19 06:49:57
【问题描述】:
我正在尝试在 pandas DataFrame 中加载 SQLAlchemy。
当我这样做时:
df = pd.DataFrame(LPRRank.query.all())
我明白了
>>> df
0 <M. Misty || 1 || 18>
1 <P. Patch || 2 || 18>
...
...
但是,我希望数据库中的每一列都成为数据框中的一列:
0 M. Misty 1 18
1 P. Patch 2 18
...
...
当我尝试时:
dff = pd.read_sql_query(LPRRank.query.all(), db.session())
我得到一个属性错误:
AttributeError: 'SignallingSession' object has no attribute 'cursor'
和
dff = pd.read_sql_query(LPRRank.query.all(), db.session)
也报错:
AttributeError: 'scoped_session' object has no attribute 'cursor'
我用来生成对象列表的是:
app = Flask(__name__)
db = SQLAlchemy(app)
class LPRRank(db.Model):
id = db.Column(db.Integer, primary_key=True)
candid = db.Column(db.String(40), index=True, unique=False)
rank = db.Column(db.Integer, index=True, unique=False)
user_id = db.Column(db.Integer, db.ForeignKey('lprvote.id'))
def __repr__(self):
return '<{} || {} || {}>'.format(self.candid,
self.rank, self.user_id)
这个问题: How to convert SQL Query result to PANDAS Data Structure? 没有错误,但将每一行作为一个对象,这不是我想要的。我可以访问返回对象中的各个列,但似乎有更好的方法。
如果您已经了解正在发生的事情并且只需要查看语法,那么 pandas.pydata.org 上的文档非常棒。 2016 年 4 月 20 日的文档(1319 页 pdf)将 pandas 连接标识为在 p.872 上仍处于试验阶段。
现在,SQLALCHEMY/PANDAS - SQLAlchemy reading column as CLOB for Pandas to_sql 是关于指定 SQL 类型的。我的是默认的 SQLAlchemy。
而且,sqlalchemy pandas to_sql OperationalError、Writing to MySQL database with pandas using SQLAlchemy, to_sql 和 SQLAlchemy/pandas to_sql for SQLServer -- CREATE TABLE in master db 是关于写入 SQL 数据库的,这会产生操作错误、数据库错误和“创建表”错误,这些都不是我的问题。
这个SQLAlchemy Pandas read_sql from jsonb 想要一个jsonb 属性到列:不是我的杯子'o 茶。
上一个问题SQLAlchemy ORM conversion to pandas DataFrame 解决了我的问题,但解决方案:使用query.session.bind 不是我的解决方案。我正在使用 db.session.add() 和 db.session.commit() 打开/关闭会话,但是当我使用此处第二个答案中指定的 db.session.bind 时,我得到一个属性错误:
AttributeError: 'list' object has no attribute '_execute_on_connection'
【问题讨论】:
标签: python pandas session sqlalchemy