sqlalchemy在使用原生sql查询时候,如何将结果以字典的形式返回?

发布于 2022-09-11 22:42:19 字数 247 浏览 21 评论 0

clipboard.png

用原生sql查询返回的是元祖结果,期望是以key:value的方式,将字段名,值返回,
sqlalchemy用其封装的方法如query执行查询,可以通过重写其declarative_base()实现该功能,但认为其封装方法在执行复杂查询的情况下写起来不如sql简单,顾提此问,期待大佬回答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只涨不跌 2022-09-18 22:42:20
for fi_result in result:
   print fi_result._asdict()
旧城烟雨 2022-09-18 22:42:20

请问题主,这个问题你是怎么解决掉的呢?

寄居人 2022-09-18 22:42:19

sqlalchemy是一个orm框架,纯sql查询和sqlalchemy并没有任何关系
以MySQLdb库为例,你可以参考一下

class Db:
    def __init__(self):
        self.connection = {
            'db': 'db',
            'user': 'user',
            'passwd': 'passwd',
            'host': 'localhost',
            'port': 3306
        }
        self.conn = MySQLdb.connect(**self.connection)


    def query(self, sql):
        try:
            with self.conn.cursor() as cursor:
                cursor.execute(sql)
                columns = [_[0].lower() for _ in cursor.description]
                rows = [dict(zip(columns, _)) for _ in cursor]
                return rows
        except Exception as e:
            raise e
        finally:
            self.conn.close()
奶茶白久 2022-09-18 22:42:19

你们如果可以改源码的话,可以尝试重写下这个方法
https://github.com/sqlalchemy...

def __repr__(self):
    return repr(dict(self))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文