Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQLdb с множество транзакции на връзка

Мисля, че тук има неразбиране какво представлява транзакция.

Вашият пример отваря една връзка, след което изпълнява една транзакция върху него. Вие изпълнявате множество SQL оператори в тази транзакция, но я затваряте напълно след извършване. Разбира се, това е повече от добре.

Изпълнение на множество транзакции (за разлика от просто SQL изрази), изглежда така:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for j in range(10):
    try:
        for i in range(10):
            cur = conn.cursor()
            query = "DELETE FROM SomeTable WHERE ID = %d" % i
            cur.execute(query)
            cur.close()
        conn.commit()
    except Exception:
        conn.rollback()

conn.close()

Горният код извършва 10 транзакции, всяка от които се състои от 10 отделни оператора за изтриване.

И да, трябва да можете да използвате повторно отворената връзка за това без проблеми, стига да не споделяте тази връзка между нишките.

Например, SQLAlchemy използва повторно връзки, като ги обединява, като раздава отворени връзки според нуждите на приложението. Нови транзакции и нови оператори се изпълняват върху тези връзки през целия живот на приложението, без да е необходимо да бъдат затваряни, докато приложението не бъде изключено.



  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. Как мога да използвам jQuery за изпълнение на MySQL заявки?

  3. Генерирайте произволен низ в MySQL

  4. Сървърът не отговаря (или сокетът на локалния MySQL сървър не е конфигуриран правилно) в wamp сървър

  5. Вмъквания на асинхронна база данни - python + mysql