DB'den bir satır elde etmeye, bu satırı değiştirmeye ve yeniden kaydetmeye çalışıyorum. Ben RowProxy nesneyi değiştirmeye çalışıyorum çünkü sqlalchemySatırda güncelleştirme SqlAlchemy ORM
Benim kod
from sqlalchemy import Column, DateTime, Integer, String, Table, MetaData
from sqlalchemy.orm import mapper
from sqlalchemy import create_engine, orm
metadata = MetaData()
product = Table('product', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(1024), nullable=False, unique=True),
)
class Product(object):
def __init__(self, id, name):
self.id = id
self.name = name
mapper(Product, product)
db = create_engine('sqlite:////' + db_path)
sm = orm.sessionmaker(bind=db, autoflush=True, autocommit=True, expire_on_commit=True)
session = orm.scoped_session(sm)
result = session.execute("select * from product where id = :id", {'id': 1}, mapper=Product)
prod = result.fetchone() #there are many products in db so query is ok
prod.name = 'test' #<- here I got AttributeError: 'RowProxy' object has no attribute 'name'
session .add(prod)
session .flush()
kullanarak
Her şey Ne yazık ki, çalışmıyor. SqlAlchemy ORM biçiminde istediğimi (yükleme, değiştirme ve kaydetme (güncelleştirme)) nasıl yapabilirim?
hızlı bir bakış not: değiştirmek için kullanılan bir oturuma nesneler eklemeyin. Yeni bir satır oluştururken eklersiniz. Normal olarak, yalnızca proxy nesnesini değiştirirsiniz, ardından oturum nesnesinde işlem yaparsınız. Ayrıca, ORM'yi gerçekten kullanmak isterseniz, normalde SQL'de bir sorgu oluşturmazsınız ve yürütme yöntemini kullanırsınız. Sorgu jeneratörü kullanın. – Keith
RowProxy nesnesini değiştirirken AttributeError olduğunu söyledi. Neden bunun işe yaramasını bekliyordun? –