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

SQL Alchemy Relationship loader оставя заключване на таблицата?

Трябва да започнете нова транзакция преди .drop_all() повикване; MySQL ви вижда да четете от таблицата в тази транзакция и заключва таблицата срещу изпускане:

session.commit()
Base.metadata.drop_all()

Извършването на транзакция имплицитно започва нова транзакция.

MySQL гарантира изолация на транзакциите; вашата транзакция ще чете последователни данни и няма да вижда промени, извършени от други транзакции, докато не започнете нова транзакция. A DROP TABLE изявлението обаче прави невъзможно MySQL да запази тези гаранции, така че таблицата се заключва.

Като алтернатива можете да промените нивото на изолация на транзакциите, като кажете на MySQL, че не ви пука за гаранциите за изолация. Тъй като сесийните връзки се обединяват, това може да се направи само за всички връзки или за никакви; използвайте isolation_level аргумент за create_engine() :

engine = create_engine(
    'mysql://username:[email protected]/databasename',
    isolation_level='READ UNCOMMITTED')

Вижте SET TRANSACTION документация за подробности относно всяко ниво на изолация.




  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?

  2. MySQL таблица само с varchar като външен ключ

  3. Показване на таблици с LIKE и NOT REGEXP

  4. Конфигурация с висока достъпност за възли на ClusterControl, използваща CMON HA

  5. SQL инжекция, която заобикаля mysql_real_escape_string()