python 扩展_用Python方法对Cursor进行扩展

用Python方法对Cursor进行扩展。为了方便使用,所以我对MySQLdb的Cursor进行了扩展,使其能够支持带?以及:xxx的查询方式。是因为以下原因。

目前的MySQLdb中的sql的语法,支持如下类型的语法:

insert into users(id, name, domain, created_at)values(%s, %s, %s, %s)

除以上之外,工作也会也用到很多的一些通用的sql的语法,是下面这样的:

insert into users(id, name, domain, created_at)values(?, ?, ?, ?)

insert into users(id, name, domain, created_at)values(:id, :name, :domain, :created_at)

class BaseCursor(MySQLdb.cursors.BaseCursor):

def _get_query_parameters(self, query, params):

if isinstance(params, dict) and params:

p = re.compile(':\w+')

return (p.sub('%s', query),

[params[param_token[1:]] for param_token in p.findall(query)])

else:

return (query.replace('?', '%s'), params)

def execute(self, query, args=None):

(query, params) = self._get_query_parameters(query, args)

return MySQLdb.cursors.BaseCursor.execute(self, query, params)

class Cursor(CursorStoreResultMixIn, CursorTupleRowsMixIn,

BaseCursor):

#www.iplaypy.com

#调用的代码如下:

cursor=Cursor(self._dbconn)

try:

cursor.execute('insert into users(name, domain)values(:name, :domain)', dict(name='xxx', domain='hahaha'))

return cursor.lastrowid

finally:

cursor.close()

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/other/o2457.html

相关文章 Recommend

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值