Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

AttributeError:__exit__ pada python 3.4

Anda mencoba menggunakan koneksi sebagai pengelola konteks:

with conn:

Objek ini tidak menerapkan metode yang diperlukan untuk digunakan seperti itu; itu bukan manajer konteks, karena tidak ada (setidaknya) __exit__ metode .

Jika Anda membaca tutorial atau dokumentasi yang menggunakan berbeda Perpustakaan MySQL, perlu diketahui bahwa fitur ini mungkin didukung oleh beberapa perpustakaan, hanya saja tidak yang ini. Proyek MySQLdb mendukungnya, misalnya.

Untuk spesifik . Anda kasus, Anda bahkan tidak perlu menggunakan with conn: garis sama sekali; Anda tidak membuat perubahan apa pun pada database, tidak diperlukan komit di mana pun. Anda dapat menghapus with conn: baris (hapus semua yang ada di bawahnya satu langkah). Jika tidak, Anda dapat mengganti pengelola konteks dengan conn.commit() manual manual di tempat lain.

Atau, Anda dapat membuat pengelola konteks Anda sendiri untuk kasus penggunaan ini, menggunakan @contextlib.contextmanager() dekorator :

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()

dan gunakan ini sebagai:

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

di mana Anda dapat memberikan argumen tambahan untuk connection.start_transaction() telepon .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Produk Magento diimpor dari database menggunakan kueri SQL

  2. Cara mengambil data dari dua tabel di sql

  3. Koneksi SSL dari Azure Database untuk MySQL menggunakan file CA

  4. Saya ingin mengambil hasil dari connection.query mysql dan menyimpannya dalam rantai lingkup global di nodejs

  5. Perbaikan tabel MySQL gagal:Tidak dapat membuat file temp baru