2013-12-03 2 views
1
dict(16) 
    ['zone'] => str(3) "S/Z" 
    ['name'] => str(20) "John user" 
    ['country'] => str(3) "AGO" 
    ['date1'] => str(10) "2012-04-23" 
    ['date2'] => str(10) "1970-06-24" 
    .... 

def save(self): 
     insert_client = db.insert('clients', zone = dict.get('zone'), ...) 

Единственный способ, который я знаю, с основной вставкой, а затем перебирать словарь, чтобы сделать N обновления для N элементов в Словаре.Вставка кратные значения Dict в дб

for key, val in dictionary.iteritems(): 
    update_client = db.update('clients', key = val) 

Любая идея сделать вставку более приятной в работе? Или я должен использовать базовую вставку, а затем заполнять профиль клиента обновлениями?

PS: ключи питона Dict это имя столбца базы данных,

+0

Я думаю, что ваш метод в порядке. Вы просите другие методы? Какой модуль это? – aIKid

+0

@aIKid, если это можно сделать только с одной вставкой, это будет лучше. pygresql – user455318

+0

Какой интерфейс вы используете для связи с MySQL? Единственный, с которым я знаком, это MySQLdb, и у него нет метода вставки. Очевидно, что метод вставки, который вставляет только один столбец, не стоит писать, поэтому вам нужна документация для этого интерфейса/драйвера. –

ответ

3

Как об использовании ** (ключевое слово аргумент распаковка)?

insert_client = db.insert('clients', **dict) 

BTW, не используйте dict в качестве имени переменной. Он теней встроенной функции dict:

+0

** dict является эквивалентом зоны = dict.get ('zone'), name = dict.get ('name') и т. Д.? спасибо – user455318

+0

@ user455318, Ты прав. См. [Распаковка списков аргументов] (http://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists) из учебника. – falsetru

Смежные вопросы