改进MySQLdb查询

时间:2014-09-07 17:37:01

标签: python

我在python-mysql中有以下查询:

self.cursor.execute('SELECT apple_id FROM main_catalog WHERE apple_id=%s', apple_id)
if not self.cursor.fetchone():
    cursor.execute('''INSERT INTO main_catalog 
                      (apple_id, provider_id, show_title, artwork_apple_url, title,
                       itunes_url, network_name, length, episode_production_number, synopsis)
                       VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)''',
                       apple_id, provider_obj.pk, show_title, artwork_apple_url, episode_title, 
                       itunes_url, network_name, length, episode_production_number, synopsis)

这看起来令人难以置信的冗长。有没有办法更简洁,更容易阅读/理解?

2 个答案:

答案 0 :(得分:3)

我建议您使用pytho-sqlsqlpuzzle来避免包含日志SQL语句的字符串

catalog = Table('main_catalog')
catalog.insert(columns=[
    catalog.apple_id, user.provide_id],
    values=[['Foo', 'foo'], ['Bar', 'bar']])
)

使用此库,您可以从dict

构建查询
columns = [Column(catalog, col) for col in data.keys()]

sql = catalog.insert(
     columns=columns,
      values=[data.values()]
)

答案 1 :(得分:0)

那么,到目前为止,没有合理的操作可以最大限度地减少代码的安静。它基本上是一个查询,它将值插入到包含许多字段的表中。我怀疑你能做些什么。