Mir ist klar, dass ich den gewünschten Effekt der Änderung eines Passwortes auch mit einer sql expression hinbekommen könnte...aber was ich will ist das mit dem orm zu verknüpfen...
Kann mir jemand sagen, warum ich mit der query unten nicht die Passwörter der User mit den Merkmalen
<User('mulck','Numa', 'sjks')>
(können auch mehrere gemäß query sein) in der DB ändern kann??
Code: Alles auswählen
from sqlalchemy import *
from sqlalchemy import create_engine
from sqlalchemy.orm import mapper, sessionmaker, relation, backref, clear_mappers
from sqlalchemy.sql.expression import select
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
fullname = Column(String(50))
password = Column(String(50))
addresses = relation("Address", order_by="Address.id", backref="user")
def __init__(self, name, fullname, password):
self.name = name
self.fullname = fullname
self.password = password
def __repr__(self):
return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
email_address = Column(String(50), nullable=False)
user_id = Column(Integer, ForeignKey('users.id'))
def __init__(self, email_address):
self.email_address = email_address
def __repr__(self):
return "<Address('%s')>" % self.email_address
def main():
conn = 'mysql://...use_unicode=0'
engine = create_engine(conn, echo=True)
metadata = Base.metadata
metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
hier---->query = session.query(User)
hier---->query = query.filter_by(name ='mulck')
hier---->query.password = 'nooo'
session.flush()
session.commit()
session.close()