小编zen*_*nio的帖子

Twisted MySQL adbapi返回字典

有没有办法将字典结果从adbapi查询返回给MySQL?

[name: 'Bob', phone_number: '9123 4567']
Run Code Online (Sandbox Code Playgroud)

默认返回元组.

['Bob', '9123 4567']
Run Code Online (Sandbox Code Playgroud)

对于简单的Python和MySQL,我们可以使用MySQLdb.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, *args, **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, excValue, excTraceback
Run Code Online (Sandbox Code Playgroud)

python twisted

7
推荐指数
1
解决办法
1533
查看次数

标签 统计

python ×1

twisted ×1