SQLAlchemy查询结果数据转化为DataFrame

本文分享了在使用Python的SQLAlchemy查询数据库并将结果转化为pandas DataFrame时遇到的问题及解决方法。通过对比不同转化方式,最终采用将查询结果转化为list再转化为DataFrame的方式成功解决问题。

起因

为了方便处理数据,Python常常会用pandas中的DataFrame对数据进行处理。有一次我想把SQLAlchemy查询出来的结果对象转化为DataFrame,期间遇到了一些问题

问题现象

这是model部分代码

class InvAppService(db.Model):
    __tablename__ = 'inv_app_service'
    id = db.Column(db.Integer, primary_key=True)
    ip = db.Column(db.String(16), unique=True, nullable=False)
    host = db.Column(db.String(32))
    
    def to_json(self):
        return {
            'ip': self.ip,
            'host': self.host,
            'LDR': self.app.app_devopses_name().get('LDR'),
            'DEV': self.app.app_devopses_name().get('DEV'),
            'INF': self.app.app_devopses_name().get('INF'),
            'OPS': self.app.app_devopses_name().get('OPS')
        }
        
    def__repr__(self):
       return '<InvAppService %r>' % self.name

在控制端我想把查询出的结果转化为df,刚开始用了下面的方法,结果rtn一直是空,但单独在jupyter测试pd.DataFrame().append({’IP’:xx,‘host’:xx,…},ignore_index=True)是可以加入数据的。后来经过各种尝试,包括把service.to_json_ip()先转化为Series再加入df也还是不行

import pandas as pd
……
services = InvAppService.query.all()
rtn = pd.DataFrame()
for service in services:
    rtn.append(service.to_json_ip(),ignore_index=True)

最后采用了下面的方法才正常转化为df格式数据

import pandas as pd
……
services = InvAppService.query.filter_by(status_code='00').all()
rtn = []
for service in services:
    rtn.append(service.to_json_ip())
rtn = pd.DataFrame(rtn)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值