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

AttributeError:__ exit__ trên python 3.4

Bạn đang cố gắng sử dụng kết nối làm trình quản lý ngữ cảnh:

with conn:

Đối tượng này không triển khai các phương thức cần thiết để được sử dụng như vậy; nó không phải là trình quản lý ngữ cảnh, vì nó thiếu (ít nhất) __exit__ phương pháp .

Nếu bạn đang đọc một hướng dẫn hoặc tài liệu sử dụng một khác nhau Thư viện MySQL, hãy lưu ý rằng tính năng này có thể được hỗ trợ bởi một số thư viện, chỉ không phải cái này. Dự án MySQLdb chẳng hạn như hỗ trợ nó.

Đối với cụ thể của bạn trường hợp, bạn thậm chí không cần sử dụng with conn: dòng ở tất cả; bạn không thực hiện bất kỳ thay đổi nào đối với cơ sở dữ liệu, không cần cam kết ở bất kỳ đâu. Bạn có thể xóa with conn: dòng (hợp nhất mọi thứ dưới nó một bước). Nếu không, bạn có thể thay thế trình quản lý ngữ cảnh bằng một conn.commit() thủ công ở nơi khác.

Ngoài ra, bạn có thể tạo trình quản lý ngữ cảnh của riêng mình cho trường hợp sử dụng này, sử dụng @contextlib.contextmanager() người trang trí :

from contextlib import contextmanager

@contextmanager
def manage_transaction(conn, *args, **kw):
    exc = False
    try:
        try:
            conn.start_transaction(*args, **kw)
            yield conn.cursor()
        except:
            exc = True
            conn.rollback()
    finally:
        if not exc:
            conn.commit()

và sử dụng cái này như:

with manage_transaction(conn) as cursor:
    # do things, including creating extra cursors

nơi bạn có thể chuyển thêm đối số cho connection.start_transaction() gọi .




  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àm cách nào để nhập MySql Connector vào Unity Project?

  2. Khởi động mùa xuân CLIENT_PLUGIN_AUTH là bắt buộc

  3. Cách tìm tên người dùng và mật khẩu cho cơ sở dữ liệu mysql

  4. Trả lại kết quả bị thiếu từ nhiều bảng thành nhiều bảng

  5. chuyển đổi danh sách thành chuỗi để chèn vào sql của tôi trong một hàng trong liệu pháp python