Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Вставка и изменение данных

Вы уже видели как это делается: для того, чтобы вставить запись в вашу базу данных сначала надо создать экземпляр модели с помощью именованных аргументов, вот так:

>>> p = Publisher(name='Apress',
...         address='2855 Telegraph Ave.',
...         city='Berkeley',
...         state_province='CA',
...         country='U.S.A.',
...         website='http://www.apress.com/')

Этот пример создания экземпляра модели не производит изменений в базе данных. Эта записть не сохраняется в базе данных пока не будет вызван метод save():

>>> p.save()

Вышеприведённые действия с точки зрения SQL операторов выглядят так:

INSERT INTO book_publisher
    (name, address, city, state_province, country, website)
VALUES
    ('Apress', '2855 Telegraph Ave.', 'Berkeley', 'CA',
     'U.S.A.', 'http://www.apress.com/');

Так как модель Publisher использует автоматически увеличивающийся первичный ключ id, первый вызов метода save() выполнит ещё и вычисление значения для первичного ключа и подставит это значение в атрибут id:

>>> p.id
52    # значение может отличаться для ваших данных

Последующие вызовы метода save() будут перезаписывать существующую запись, не создавая новую (т.е., будут выполнять SQL оператор UPDATE вместо INSERT):

>>> p.name = 'Apress Publishing'
>>> p.save()

В SQL это будет выглядеть так:

UPDATE book_publisher SET
    name = 'Apress Publishing',
    address = '2855 Telegraph Ave.',
    city = 'Berkeley',
    state_province = 'CA',
    country = 'U.S.A.',
    website = 'http://www.apress.com'
WHERE id = 52;

Да, следует отметить то, что все поля будут обновлены, а не только те, что были изменены. В зависимости от реализации вашего приложения, такое поведение может вызвать «гонки» (race condition). См «Updating Multiple Objects in One Statement» далее о том, как выполнять подобные запрос:

UPDATE books_publisher SET
    name = 'Apress Publishing'
WHERE id=52;


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
510 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID