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

Manajer konteks untuk MySQLdb dari Python

Sebelumnya , koneksi MySQLdb adalah pengelola konteks. Mulai dari komit ini pada 04-12-2018 , namun, koneksi MySQLdb tidak lagi menjadi pengelola konteks, dan pengguna harus secara eksplisit memanggil conn.commit() atau conn.rollback(), atau menulis pengelola konteks mereka sendiri, seperti di bawah ini.

Anda dapat menggunakan sesuatu seperti ini:

import config
import MySQLdb
import MySQLdb.cursors as mc
import _mysql_exceptions
import contextlib
DictCursor = mc.DictCursor
SSCursor = mc.SSCursor
SSDictCursor = mc.SSDictCursor
Cursor = mc.Cursor

@contextlib.contextmanager
def connection(cursorclass=Cursor,
               host=config.HOST, user=config.USER,
               passwd=config.PASS, dbname=config.MYDB,
               driver=MySQLdb):
    connection = driver.connect(
            host=host, user=user, passwd=passwd, db=dbname,
            cursorclass=cursorclass)
    try:
        yield connection
    except Exception:
        connection.rollback()
        raise
    else:
        connection.commit()
    finally:
        connection.close()

@contextlib.contextmanager
def cursor(cursorclass=Cursor, host=config.HOST, user=config.USER,
           passwd=config.PASS, dbname=config.MYDB):
    with connection(cursorclass, host, user, passwd, dbname) as conn:
        cursor = conn.cursor()
        try:
            yield cursor
        finally:
            cursor.close()


with cursor(SSDictCursor) as cur:
    print(cur)
    connection = cur.connection
    print(connection)
    sql = 'select * from table'
    cur.execute(sql)
    for row in cur:
        print(row)

Untuk menggunakannya, Anda akan menempatkan config.py di PYTHONPATH Anda dan tentukan variabel HOST, USER, PASS, MYDB di sana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Connect melalui proxy di Java

  2. Dapatkan Sisipkan Pernyataan untuk baris yang ada di MySQL

  3. cari data dari input html di mysql

  4. Menemukan jeda baris dan carriage return (\r\n) di MySQL

  5. MySQL vs MySQLi saat menggunakan PHP