Написать заявление об обновлении в Python Elixir - PullRequest
0 голосов
/ 19 октября 2010

Я использую Elixir в качестве ORM для базы данных MySQL, у меня проблемы с написанием инструкции обновления, например:

"update products set price=NULL where id>100"

Это мой эликсир

class Product(Entity):
    using_options(tablename='model_product')
    name                        = Field(Unicode(200))
    en_name             = Field(Unicode(200))
    price                       = Field(Float)
    en_price            = Field(Float)
    productid                   = Field(Unicode(200))
    site                        = Field(Unicode(30))
    link                        = Field(Unicode(300))
    smallImage                  = Field(Unicode(300))
    bigImage                    = Field(Unicode(300))
    description                 = Field(UnicodeText)
    en_description              = Field(UnicodeText)
    createdOn                   = Field(DateTime, default=datetime.datetime.now)
    modifiedOn                  = Field(DateTime, default=datetime.datetime.now)
    size                        = Field(Unicode(30))
    en_size                     = Field(Unicode(30))
    weight                      = Field(Unicode(30))
    en_weight                   = Field(Unicode(30))
    wrap                        = Field(Unicode(30))
    en_wrap                     = Field(Unicode(30))
    material                    = Field(Unicode(30))
    en_material                 = Field(Unicode(30))
    packagingCount              = Field(Unicode(30))
    stock                       = Field(Integer)
    location                    = Field(Unicode(30))
    en_location                 = Field(Unicode(30))
    popularity                  = Field(Integer)
    inStock                     = Field(Boolean)
    categories                  = Field(Unicode(30))

Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 29 июля 2013

Вы можете просто использовать способ SQLAlchemy, чтобы заметить, что во многих случаях elixir не заменяет работу SQLAlchemy.

import sqlalchemy as sa

sa.update(Product.table).\
    where(Product.id > 100).\
    values(price=None)
0 голосов
/ 28 апреля 2015

Если кто-то наткнется на этот вопрос, это должно сработать в Эликсире:

Product.query.filter(Product.id > 100).update({Product.price: None})
0 голосов
/ 19 октября 2010

Попытайтесь мыслить с точки зрения объектов, а не SQL, что является причиной для получения ORM.
Я просто следовал учебнику по эликсиру с вашим классом:

for p in Product.query.filter(Product.id > 100):
    p.price = None
session.commit()

В SQLAlchemy Python's None отображается на NULL в SQL: Общие операторы фильтрации

...