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

魏什么
  • 1.5k

clipboard.png

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

回复
阅读 5.6k
4 个回答
✓ 已被采纳

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()
叶子哥哥
  • 4
新手上路,请多包涵

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

for fi_result in result:
   print fi_result._asdict()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏