2016-10-25 5 views
0

Kenneth Reitz's records library을 사용하여 자동 테스트 스크립트를 작성하려고합니다. 나는 여기 저기에 업데이 트에 대한 MySQL 데이터베이스를 확인해야합니다.레코드 쿼리 또는 닫기 트랜잭션의 격리 수준 변경

db_url_mysql = 'mysql://user:[email protected]:3306/DB' 
db = records.Database(db_url_mysql) 
rows = db.query("SELECT * FROM Users").all() 

그러나 간혹 간단한 쿼리가 테이블의 업데이트를 무시하고 빈 데이터 집합을 반환하는 것을 발견했습니다. 나는 GUI 클라이언트에서 업데이트를 보거나 대안의 파이썬 콘솔에서 레코드를 사용할 수도 있습니다. 레코드가 SQLAlchemy를 기본 격리 수준 "REPEATABLE READ"로 사용하고 있음을 발견했습니다. 반복 읽기는 트랜잭션이 끝날 때까지 모든 업데이트를 무시하므로 볼 수 없습니다.

변경할 수있는 방법이 있습니까? 트랜잭션을 닫고 새 트랜잭션을 열거 나이 연결의 격리 수준을 변경해야 할 수도 있습니다. 어떻게해야합니까?

+0

나는 여전히 기록 라이브러리를 삭제하고 SQLAlchemy의 이동없이이 설정을 변경하는 방법을 찾을 수 없습니다 사용해야 연결에 격리 수준을 설정합니다. 그러나 해결 방법을 찾았습니다. 'db.query ('SET AUTOCOMMIT = 1')'을 호출하면, 다음 쿼리는 호출하자마자 커밋되어 효과적으로 캐싱하지 않고 데이터베이스를 확인할 수 있습니다. – Ariksu

답변

0

이제 제 질문에 답변 해 드리겠습니다.

레코드 0.5.0 (Novemmber 2016)이 릴리스되면 SQLAlchemy 드라이버에 인수를 전달할 수 있습니다. 내가 사용한 0.4.3에는 그런 가능성이 없었다.

그래서, 우리는

db_url_mysql = 'mysql://user:[email protected]:3306/DB' 
db = records.Database(db_url_mysql,isolation_level="READ_UNCOMMITTED")