저는 매우 잘 관리되지 않은 레거시 Paradox 데이터베이스 시스템이있는 환경에서 작업하고 있습니다. (필자는 관리자가 아닙니다.) 저는 pyodbc를 사용하여 테이블과 상호 작용하는 것을 망설였습니다. 기본 기능이 작동하는 것 같습니다. 여기에 몇 가지 (작업) 테스트 코드는 다음과 같습니다pyodbc를 사용하여 Paradox gui에서 열려있는 Paradox 테이블을 읽을 수 있습니까?
import pyodbc
LOCATION = "C:\test"
cnxn = pyodbc.connect(r"Driver={{Microsoft Paradox Driver (*.db)\}};DriverID=538;Fil=Paradox 5.X;DefaultDir={0};Dbq={0};CollatingSequence=ASCII;".format(LOCATION), autocommit=True, readonly=True)
cursor = cnxn.cursor()
cursor.execute("select last, first from test")
row = cursor.fetchone()
print row
문제는 우리의 중요한 테이블의 대부분은 거의 항상 누군가의 역설 GUI 오픈으로 바뀌 었다는 점이다. pyodbc이 cursor.execute()
이 그것을 호출 될 때 테이블을 잠그려고하기 때문에
pyodbc.Error: ('HY000', "[HY000] [Microsoft][ODBC Paradox Driver] Could not lock
table 'test'; currently in use by user '(unknown)' on machine '(unknown)'. (-1304)
(SQLExecDirectW)")
이 분명히있다 : 그 테이블 중 하나에서 select
을하려고 할 때마다 나는이 오류가 발생합니다. 이 동작은 cursor.execute()
이 임의의 SQL 코드를 실행하고 테이블을 변경할 수 있기 때문에 완벽합니다.
그러나 Paradox 자체 (GUI를 통해)는 여러 사용자를 올바르게 처리하는 것처럼 보입니다. 사람들이 테이블을 사용하는 동안 테이블을 재구성하려고하면 비슷한 오류 만 발생합니다.
pyodbc에서 일종의 읽기 전용 모드를 사용할 수있는 방법이 있습니까? 예를 들어 내가 할 때 테이블을 잠글 필요가 없습니다. select
등이 있습니까? 아니면 어떻게 돌아갈 수 있을지 모르는 작동 방식의 근본적인 부분을 잠그고 있습니까?
다른 모듈을 사용하는 솔루션도 문제가 없습니다.
낮은 자격 증명 (읽기 전용 권한)으로 새 계정을 만들 수 있습니까? – enginefree
그게 내가 "readonly = True"매개 변수가 할 것이라고 기대했지만, 그것은 나를 위해 작동하지 않았다. – PeterBB
pyobdc의 버전은 무엇입니까? – enginefree