Flask-SQLalchemy обновляет информацию о строке

Как я могу обновить информацию о строке?

Например, я хотел бы изменить столбец имен строки с идентификатором 5.

3 Solutions collect form web for “Flask-SQLalchemy обновляет информацию о строке”

Извлеките объект, используя учебник, показанный в документации Flask-SQLAlchemy . Когда у вас есть объект, который вы хотите изменить, измените сам объект. Затем db.session.commit() .

Например:

 admin = User.query.filter_by(username='admin').first() admin.email = 'my_new_email@example.com' db.session.commit() user = User.query.get(5) user.name = 'New Name' db.session.commit() 

Flask-SQLAlchemy основан на SQLAlchemy, поэтому обязательно зайдите в SQLAlchemy Docs .

Существует update метода для объекта BaseQuery в SQLAlchemy, которое возвращается filter_by .

 admin = User.query.filter_by(username=='admin').update(dict(email='my_new_email@example.com'))) db.session.commit() 

Преимущество использования update при изменении объекта происходит, когда есть много объектов для обновления.

Если вы хотите предоставить add_user для всех admin ,

 rows_changed = User.query.filter_by(role=='admin').update(dict(permission='add_user')) db.session.commit() 

Это не работает, если вы модифицируете маринованный атрибут модели. Маринованные атрибуты должны быть заменены для запуска обновлений:

 from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from pprint import pprint app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqllite:////tmp/users.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) data = db.Column(db.PickleType()) def __init__(self, name, data): self.name = name self.data = data def __repr__(self): return '<User %r>' % self.username db.create_all() # Create a user. bob = User('Bob', {}) db.session.add(bob) db.session.commit() # Retrieve the row by its name. bob = User.query.filter_by(name='Bob').first() pprint(bob.data) # {} # Modifying data is ignored. bob.data['foo'] = 123 db.session.commit() bob = User.query.filter_by(name='Bob').first() pprint(bob.data) # {} # Replacing data is respected. bob.data = {'bar': 321} db.session.commit() bob = User.query.filter_by(name='Bob').first() pprint(bob.data) # {'bar': 321} # Modifying data is ignored. bob.data['moo'] = 789 db.session.commit() bob = User.query.filter_by(name='Bob').first() pprint(bob.data) # {'bar': 321} 
  • SQLAlchemy: лучший способ для обновления с декларативным?
  • Многие-ко-многим в sqlalchemy. Предотвращение вставки SQLAlchemy в таблицу, если тег уже существует
  • Создание базы данных с помощью SQLAlchemy in Flask
  • Использование меток sqlalchemy python
  • Как печатать все столбцы в SQLAlchemy ORM
  • Как элегантно проверить существование объекта / экземпляра / переменной и одновременно назначить его переменной, если она существует в python?
  • Выбор отдельных значений столбцов в SQLAlchemy / Elixir
  • Триггер в sqlachemy
  •  
    Interesting Posts for Van-Lav

    Поиск элегантной итерации кубиков Python

    Не удается запустить bjam для компиляции обучающего курса boost python

    Почему приложение Flask обнаружено как node.js на Heroku

    Как преобразовать электронные таблицы OpenDocument в pandas DataFrame?

    В возвышенном, почему def run работает в одном случае, а не в другом случае, и как я могу заставить его работать?

    Кэширование изображений в браузере – приложение app-engine-patch

    непризнанная опция командной строки '-rdynamic' в GCC v4.9.2

    Кадрирование изображений с использованием Python

    PYTHONSTARTUP, похоже, не работает

    Python & Pygame: обновление всех элементов в списке под циклом во время итерации

    Можете ли вы порекомендовать некоторую клиентскую библиотеку python http?

    Какой самый простой способ загрузить отфильтрованный файл .tda с помощью pandas?

    Как поймать вывод функции matlab из python

    Модели доступа в другом проекте в представлении Django вызывают ошибку «таблица не существует»

    Можно ли настроить Python для кэширования поиска в каталоге sys.path?

    Python - лучший язык программирования в мире.