Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पायथन के MySQLdb के लिए संदर्भ प्रबंधक

पहले , MySQLdb कनेक्शन संदर्भ प्रबंधक थे। यह 2018-12-04 को प्रतिबद्ध है के अनुसार ए> , हालांकि, MySQLdb कनेक्शन अब संदर्भ प्रबंधक नहीं हैं, और उपयोगकर्ताओं को स्पष्ट रूप से conn.commit() या conn.rollback() को कॉल करना चाहिए, या अपना स्वयं का संदर्भ प्रबंधक लिखना चाहिए, जैसे कि नीचे दिया गया है।

आप कुछ इस तरह इस्तेमाल कर सकते हैं:

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)

इसका उपयोग करने के लिए आपको config.py रखना होगा अपने PYTHONPATH में और वहां HOST, USER, PASS, MYDB वेरिएबल्स को परिभाषित करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ग्रुप बाय - न्यूल को ग्रुप न करें

  2. दो तरह से डीबी एन्क्रिप्शन व्यवस्थापक से भी सुरक्षित

  3. MySQL अक्षांश और देशांतर तालिका सेटअप

  4. कॉलम से अद्वितीय मानों का चयन करना

  5. क्या मुझे अपना डीबी सामान्य करना चाहिए या नहीं?