【发布时间】:2012-03-06 19:05:07
【问题描述】:
我已经学习了一些关于 python-mysqldb 的基础知识,当我想定义 anther 函数进行查询时,我必须重复编写 (connect ,cursor...try ..) 所以我想设计一个像 jdbcTemplate (Java EE, Spring) 这样的模板 我的代码是:
def DBV():
def templateFN(fn):
logging.basicConfig(level=logging.INFO)
log = logging.getLogger('DB')
conn = MySQLdb.connect(user='root',passwd='247326',db='lucky',charset="utf8",cursorclass=MySQLdb.cursors.DictCursor);
cursor = conn.cursor()
def wrap(data=None):
try:
return fn(cursor=cursor,data=data)
#conn.commit()
except Exception ,e:
conn.rollback()
log.error('%s, transaction rollback',e)
finally:
cursor.close()
conn.close()
return wrap
class DB():
@templateFN
def insertTest(self,cursor,data=None):
data = {
'field':'this is a test',
'name':'this is a name'
}
return cursor.execute('insert into test(field,name) values(%(field)s,%(name)s)',data)
return DB()
db = DBV()
打印'返回值',db.insertTest(data="ok")
Traceback (most recent call last):
文件“D:\WorkSpaces\Aptana Studio 3 Workspace\VLuck\src\com\test.py”,第 164 行,在 打印'返回值',db.insertTest(data="ok") TypeError: wrap() 为关键字参数“数据”获取了多个值
但是失败了,我该怎么做才对
【问题讨论】:
-
某些缩进可能无法正确显示:)
-
为什么“conn.commit()”只是一条评论?
-
呃,我不想把它插入数据库进行测试
-
它是如何“失败”的?发生了什么?
-
哈哈,忘记贴错误信息,我只是编辑它,请帮助我
标签: python templates mysql-python