您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 扭曲的MySQL adbapi返回字典

5b51 2022/1/14 8:23:19 python 字数 3081 阅读 567 来源 www.jb51.cc/python

有没有办法将字典结果从adbapi查询返回给 MySQL? [name: 'Bob', phone_number: '9123 4567'] 默认返回元组. ['Bob', '9123 4567'] 对于简单的Python& MySQL我们可以使用MySQLdb.cursors.DictCursor.但如何使用扭曲的adbapi UPD:我解决了,但我认为应该有更好的方法.我的解决方案:只需覆盖a

概述

[name: 'Bob',phone_number: '9123 4567']

认返回元组.

['Bob','9123 4567']

对于简单的Python& @R_502_1681@我们可以使用@R_502_1681@db.cursors.DictCursor.但如何使用扭曲的adbapi

UPD:我解决了,但我认为应该有更好的方法.我的解决方案:只需覆盖adbapi.ConnectionPool类的* _runInteraction *方法.

class MyAdbapiConnectionPool(adbapi.ConnectionPool):
def _runInteraction(self,interaction,*args,**kw):
    conn = self.connectionFactory(self)
    trans = self.transactionFactory(self,conn)
    try:
        result = interaction(trans,**kw)
        if(result and isinstance(result[0],(list,tuple))):
            colnames = [c[0] for c in trans._cursor.description]
            result = [dict(zip(colnames,item)) for item in result]         
        trans.close()
        conn.commit()
        return result
    except:
        excType,excValue,excTraceback = sys.exc_info()
        try:
            conn.rollback()
        except:
            log.err(None,'Rollback Failed')
        raise excType,excTraceback
import @R_502_1681@db
pool = ConnectionPool("@R_502_1681@db",...,cursorclass=@R_502_1681@db.cursors.DictCursor)
...

当你运行一个查询时,你会得到一个dict而不是一个元组,例如runQuery(“SELECT 1”)产生一个({‘1’:1L}的结果,)

总结

以上是编程之家为你收集整理的python – 扭曲的MySQL adbapi返回字典全部内容,希望文章能够帮你解决python – 扭曲的MySQL adbapi返回字典所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶