Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật bảng đã tham gia qua SQLAlchemy ORM sử dụng session.query

Kể từ phiên bản 0.7.4 sqlalchemy.sql.expression.update cho phép bạn tham chiếu đến nhiều bảng trong mệnh đề WHERE. Với điều này, bạn có thể xây dựng và thực thi một biểu thức như:

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

(ví dụ trực tiếp từ liên kết ở trên)

Vấn đề mà ValAyal đang gặp phải thực sự là do Query.join() không được hỗ trợ với Query.update() . Thật không may, cho đến 0.9.1, điều này đã âm thầm tạo ra các truy vấn như ValAyal đã chia sẻ ở trên. ghi chú thay đổi cho 0.9.1 lưu ý rằng hành vi đã được sửa đổi để phát ra cảnh báo:

Chúng tôi thực sự gặp phải vấn đề này tại nơi tôi làm việc tối nay và nhận thấy rằng mã của chúng tôi trên thực tế đang phát ra cảnh báo sau (cho biết nó sẽ xảy ra lỗi trong phiên bản 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()

Trong trường hợp của chúng tôi, chúng tôi đã chọn chuyển đổi cập nhật thành một lựa chọn và cập nhật thành một bảng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LỖI 1115 (42000):Bộ ký tự không xác định:'utf8mb4'

  2. Cần trợ giúp trong việc tạo sổ cái đơn giản từ các bảng nợ &tín dụng mysql?

  3. Làm thế nào để hiển thị dữ liệu NESTED SET phân cấp với PHP?

  4. MySQLi đã chuẩn bị các câu lệnh và THAY THẾ VÀO

  5. Bế tắc trong MySQL do Chèn bởi nhiều luồng