Ya has visto cómo se hace: para insertar una fila en tu base de datos, primero crea una instancia de tu modelo usando argumentos por nombre, como:
>>> p = Publisher(name='Apress',
... address='2855 Telegraph Ave.',
... city='Berkeley',
... state_province='CA',
... country='U.S.A.',
... website='http://www.apress.com/')
Este acto de instanciar una clase modelo no toca la base de datos.
Para guardar el registro en la base de datos (esto es, para realizar la
sentencia SQL INSERT
), llama al método save()
del objeto:
>>> p.save()
En SQL, esto puede ser traducido directamente en lo siguiente:
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/');
Como el modelo Publisher
usa una clave primaria autoincremental id
, la
llamada inicial a save()
hace una cosa más: calcula el valor de la clave
primaria para el registro y lo establece como el valor del atributo id
de
la instancia:
>>> p.id
52 # esto será diferente según tus datos
Las subsecuentes llamadas a save()
guardarán el registro en su lugar, sin
crear un nuevo registro (es decir, ejecutarán una sentencia SQL UPDATE
en
lugar de un INSERT
):
>>> p.name = 'Apress Publishing'
>>> p.save()
La sentencia save()
del párrafo anterior resulta aproximadamente en la
sentencia SQL siguiente:
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;