python – 将数据从sqlalchemy移动到pandas DataFrame
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 将数据从sqlalchemy移动到pandas DataFrame,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2968字,纯文字阅读大概需要5分钟。
内容图文
![python – 将数据从sqlalchemy移动到pandas DataFrame](/upload/InfoBanner/zyjiaocheng/897/cc81adf66d154955a35553f77cc840ee.jpg)
我正在尝试在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属性列:不是我的杯子茶.
上一个问题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, 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 __init__(self, candid=None, rank=None, user_id=None):
self.data = (candid, rank, user_id)
def __repr__(self):
return (self.candid, self.rank, 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 – 将数据从sqlalchemy移动到pandas DataFrame全部内容,希望文章能够帮你解决python – 将数据从sqlalchemy移动到pandas DataFrame所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。