使用dict在SQL插入上进行字符串格式化

时间:2015-04-18 18:59:22

标签: python mysql

以下是我通常在MySQLdb中添加参数的方法:

cursor.execute('INSERT INTO main_territory (code, name) VALUES (%s, %s)', (item[0], item[1]))

有没有办法让字符串格式更直观?例如,如果INSERT中有50个参数。类似的东西:

cursor.execute('''INSET INTO main_territory (code, name) VALUES ({code}, {name})''',
                  {code=item[0], name=item[1}
               )

1 个答案:

答案 0 :(得分:1)

这取决于数据库驱动程序。通常,如果支持位置参数(%s),那么使用%(name)s格式命名参数可以是:

cursor.execute(
    '''INSERT INTO main_territory (code, name) VALUES (%(code)s, %(name)s)''',
    {'code': item[0], 'name': item[1]})

然后将参数值作为字典传入。

最常用的MySQL数据库适配器MySQLdb支持这种风格。

其他数据库适配器使用?:name作为位置和命名参数;您可以查询模块上paramstyle attribute使用的样式:

>>> import MySQLdb
>>> MySQLdb.paramstyle
'format'

但是因为大多数驱动程序都支持位置和命名样式,所以它们通常只命名一个('format''qmark'),同时也支持命名变体。请务必参阅文档以验证这一点。