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

SQL Alchemy Relationship loader để lại một khóa trên bảng?

Bạn cần bắt đầu một giao dịch mới trước .drop_all() cuộc gọi; MySQL thấy bạn đang đọc từ bảng trong giao dịch này và khóa bảng khỏi bị rơi:

session.commit()
Base.metadata.drop_all()

Việc cam kết một giao dịch bắt đầu một giao dịch mới.

MySQL đảm bảo về cách ly giao dịch; giao dịch của bạn sẽ đọc dữ liệu nhất quán và sẽ không thấy các thay đổi được cam kết bởi các giao dịch khác cho đến khi bạn bắt đầu một giao dịch mới. DROP TABLE tuy nhiên, câu lệnh làm cho MySQL không thể giữ các bảo đảm này, do đó bảng đang bị khóa.

Ngoài ra, bạn có thể thay đổi mức cô lập giao dịch, nói với MySQL rằng bạn không quan tâm đến các đảm bảo cô lập. Bởi vì các kết nối phiên được gộp chung, điều này chỉ có thể được thực hiện cho tất cả các kết nối hoặc không kết nối nào cả; sử dụng isolation_level đối số cho create_engine() :

engine = create_engine(
    'mysql://username:[email protected]/databasename',
    isolation_level='READ UNCOMMITTED')

Xem SET TRANSACTION tài liệu để biết chi tiết về từng cấp độ cách ly.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố với truy vấn MySQL bằng AVG ()

  2. Làm thế nào để di chuyển các cột trong một bảng MySQL?

  3. SQLite - ĐẶT HÀNG BẰNG RAND ()

  4. Giá trị múi giờ máy chủ 'AEST' không được công nhận hoặc đại diện cho nhiều hơn một múi giờ

  5. Cách tối ưu để lưu trữ / truy xuất mảng trong bảng