Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Оновлення в БД | SQLAlchemy
Бази Даних у Python

bookОновлення в БД

У цьому розділі розглянемо, як оновлювати записи у базі даних за допомогою SQLAlchemy. Оновлення записів є важливим для зміни наявних даних у таблицях, наприклад, при зміні описів або інших полів. SQLAlchemy надає ефективні та прості методи для виконання оновлень.

Оновлення одного запису

Найпоширеніша операція оновлення — це зміна одного запису. Для цього потрібно отримати об'єкт, змінити його атрибути та зберегти зміни.

product = session.query(Product).filter(Product.id == 1).first()

if product:
    product.description = "Updated description for high-end gaming laptop"
    session.commit()

Щоб отримати продукт за його ID, використовується запит із фільтром для вказання потрібного ID. Після зміни description продукту виклик session.commit() зберігає зміни у базі даних.

Оновлення декількох записів

Іноді виникає потреба оновити декілька записів одночасно. SQLAlchemy дозволяє використовувати filter() разом із методом update() для ефективного оновлення записів.

session.query(Product).filter(Product.price > 1000).update(
    {Product.description: "Updated description for premium products"}, 
    synchronize_session="fetch"
)
session.commit()

Щоб відфільтрувати продукти з ціною понад $1000, використовується запит із відповідною умовою. Метод update застосовує потрібні зміни до всіх відповідних записів, а аргумент synchronize_session="fetch" забезпечує синхронізацію сесії після оновлення.

Масові оновлення

Для масштабних змін масові оновлення є більш ефективними, оскільки вони напряму змінюють записи у базі даних без завантаження об'єктів у пам'ять. Це ідеально підходить для оновлення великої кількості рядків одночасно.

session.query(Product).filter(Product.price < 500).update(
    {Product.description: "Generic description for affordable products"}, 
    synchronize_session="fetch"
)
session.commit()

Цей код ефективно оновлює description для всіх продуктів із ціною нижче $500 за одну операцію. Масові оновлення працюють швидше та економлять пам'ять порівняно з індивідуальним оновленням записів.

Завдання

Swipe to start coding

  1. Отримання всіх продуктів з бази даних.
  2. Обчислення нової ціни для кожного продукту шляхом зменшення її на 20%.
  3. Збереження оновлених цін у базі даних.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 7
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain the difference between updating a single record and a bulk update in SQLAlchemy?

What does the `synchronize_session` argument do in the `update()` method?

Are there any risks or things to watch out for when performing bulk updates?

close

Awesome!

Completion rate improved to 4.76

bookОновлення в БД

Свайпніть щоб показати меню

У цьому розділі розглянемо, як оновлювати записи у базі даних за допомогою SQLAlchemy. Оновлення записів є важливим для зміни наявних даних у таблицях, наприклад, при зміні описів або інших полів. SQLAlchemy надає ефективні та прості методи для виконання оновлень.

Оновлення одного запису

Найпоширеніша операція оновлення — це зміна одного запису. Для цього потрібно отримати об'єкт, змінити його атрибути та зберегти зміни.

product = session.query(Product).filter(Product.id == 1).first()

if product:
    product.description = "Updated description for high-end gaming laptop"
    session.commit()

Щоб отримати продукт за його ID, використовується запит із фільтром для вказання потрібного ID. Після зміни description продукту виклик session.commit() зберігає зміни у базі даних.

Оновлення декількох записів

Іноді виникає потреба оновити декілька записів одночасно. SQLAlchemy дозволяє використовувати filter() разом із методом update() для ефективного оновлення записів.

session.query(Product).filter(Product.price > 1000).update(
    {Product.description: "Updated description for premium products"}, 
    synchronize_session="fetch"
)
session.commit()

Щоб відфільтрувати продукти з ціною понад $1000, використовується запит із відповідною умовою. Метод update застосовує потрібні зміни до всіх відповідних записів, а аргумент synchronize_session="fetch" забезпечує синхронізацію сесії після оновлення.

Масові оновлення

Для масштабних змін масові оновлення є більш ефективними, оскільки вони напряму змінюють записи у базі даних без завантаження об'єктів у пам'ять. Це ідеально підходить для оновлення великої кількості рядків одночасно.

session.query(Product).filter(Product.price < 500).update(
    {Product.description: "Generic description for affordable products"}, 
    synchronize_session="fetch"
)
session.commit()

Цей код ефективно оновлює description для всіх продуктів із ціною нижче $500 за одну операцію. Масові оновлення працюють швидше та економлять пам'ять порівняно з індивідуальним оновленням записів.

Завдання

Swipe to start coding

  1. Отримання всіх продуктів з бази даних.
  2. Обчислення нової ціни для кожного продукту шляхом зменшення її на 20%.
  3. Збереження оновлених цін у базі даних.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 7
single

single

some-alt