sql >> Database teknologi >  >> RDS >> Mysql

Opdater sammenføjet tabel via SQLAlchemy ORM ved hjælp af session.query

Fra version 0.7.4 sqlalchemy.sql.expression.update tillader dig at henvise til flere tabeller i WHERE-sætningen. Med dette kunne du bygge og udføre et udtryk som:

users.update().values(name='ed').where(
        users.c.name==select([addresses.c.email_address]).\
                    where(addresses.c.user_id==users.c.id).\
                    as_scalar()
        )

(eksempel direkte fra linket ovenfor)

Problemet ValAyal har er faktisk fordi Query.join() er ikke understøttet med Query.update() . Desværre, indtil 0.9.1 genererede dette stille forespørgsler som den ValAyal delte ovenfor. ændringslognoter for 0.9.1 bemærker, at adfærden blev ændret til at udsende en advarsel:

Vi løb faktisk ind i det her, hvor jeg arbejder netop i aften, og fandt ud af, at vores kode i virkeligheden udsender følgende advarsel (som siger, at det vil være en fejl i 1.0):

SAWarning: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called.  This will be an exception in 1.0
  self._validate_query_state()

I vores tilfælde valgte vi at konvertere opdateringen til et udvalg og en opdatering til én tabel.



  1. Hvordan kontrollerer man den endelige SQL-parametriserede forespørgsel i PHP med PDO?

  2. Kan ikke oprette forbindelse til lokal MySQL-server via socket

  3. Twitter bootstrap typeahead returnerer flere værdier og udfylder redigeringsfeltet

  4. Konverter dato oprettet af jquery datepicker til et standard mysql-datoformat