python – 将数据从sqlalchemy移动到pandas DataFrame
我正在尝试在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,unique=False) user_id = db.Column(db.Integer,db.ForeignKey('lprvote.id')) def __repr__(self): return '<{} || {} || {}>'.format(self.candid,self.rank,self.user_id) 这个问题: 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属性列:不是我的杯子茶. 上一个问题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' 解决方法
只需在模型中添加__init__方法,并在构建数据帧之前调用Class对象.具体来说,下面使用pandas.DataFrame()创建一个可迭代的元组绑定到列中.
class LPRRank(db.Model): id = db.Column(db.Integer,db.ForeignKey('lprvote.id')) def __init__(self,candid=None,rank=None,user_id=None): self.data = (candid,rank,user_id) def __repr__(self): return (self.candid,self.user_id) data = db.session.query(LPRRank).all() df = pd.DataFrame([(d.candid,d.rank,d.user_id) for d in data],columns=['candid','rank','user_id']) 或者,使用基于您定义的Model类LPRRank的SQLAlchemy ORM来运行read_sql: df = pd.read_sql(sql = db.session.query(LPRRank) .with_entities(LPRRank.candid,LPRRank.rank,LPRRank.user_id).statement,con = db.session.bind) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 我可以在我的Apache服务器上运行Bottle.py而不会
- Python:AttributeError:_dep_map
- Python中if __name__ == '__main__'作用解析
- python – 如何在连接urllib2后确定服务器的IP地址?
- 如果第N个索引应该大于之前的索引,如何检查索引
- 如何让scrapy表单提交工作
- python-2.7 – 无法使用python和请求发布到solr服务器
- 有人问如何遍历取得类的子类或实例
- 如何在Python中覆盖方法对象的__call__方法?
- python – gobject.type_register()做什么?