2011-12-05 3 views
4

파이썬을 통해 SQLite 데이터베이스를 열고 테이블 뷰 뷰에 액세스하려고합니다. 불행히도 오류 메시지가 나타납니다. 파이썬 코드는 아래의 문제를 보여줍니다파이썬 sqlite3은 테이블 뷰 뷰를 만들 수 없습니다

import sqlite3 

conn = sqlite3.connect("test.db") 
mydb = conn.cursor() 

mydb.execute("CREATE TABLE TestTbl (MRTarget_id int, Fullmodel text)") 
mydb.execute("CREATE TABLE TestTbl2 (Other_id int, Othermodel text)") 

mydb.execute("CREATE VIEW TestView AS SELECT m.ROWID, m.MRTarget_id, m.Fullmodel, t.Othermodel FROM TestTbl m, TestTbl2 t") 
mydb.execute("CREATE VIEW TestView2 AS SELECT m.Fullmodel, m.Othermodel FROM TestView m") 

mydb.close() 

파이썬 오류 "sqlite3.OperationalError을 : 그런 열 : m.Fullmodel"을 뱉어하지 TestView2을 만들려고 시도 후. 그러나 Sqlite3 프롬프트에서 위의 SQL 문을 아무런 문제없이 실행할 수 있습니다. 필자의 데이터베이스에는 테이블의 뷰 뷰가 포함되어 있으므로 프로그래밍 방식으로 파이썬을 통해 액세스 할 수없는 것은 아닌지 궁금합니다.

+0

Python 2.6을 사용하고 계십니까? –

+0

또한이 문제를 재현 할 수 없습니다, 위의 코드는 나를 위해 잘 작동합니다. –

+1

win32에서 [MSC v.1500 32 비트 (Intel)]이 Python으로 재현 : Python 2.6.6 (r266 : 84297, 2010 년 8 월 24 일 18:46:32) 동일한 플랫폼에서 Python 2.7.1로 확인하십시오. –

답변

0

코드가 제대로 작동합니다.

conn.commit() 
+0

각 mydb.execute 문 다음에 conn.commit()을 추가했지만 사용하지 않으려 고 시도했습니다. 여전히 동일한 오류 메시지가 나타납니다. Python 2.6.5를 사용하고 있습니다. 어쩌면 그게 문제 죠? 사실 나는 더 새로운 파이썬 버전을 시험해 보았고 파이썬을 업그레이드하는 것이 좋을 것 같습니다. 감사합니다. –

+0

저는 그것이 그렇게 생각하지 않습니다. 저는 파이썬 2.6을 사용하고 있습니다. 아무 것도 없습니다. – babbageclunk

1

저도 같은 문제를 했어 - 그리고 나는 해결책을 발견 :

당신은 첫 번째보기와 두 번째를 만드는 사이에 커밋 시도 할 수 있습니다. 나는 당신의 문제가 당신의 초기보기 '그리고 TestView'에서, 속성 이름이 실제로 m.ROWID, m.Fullmodel 등 대신에 단지 ROWID, Fullmodel

SQLite는 관리자를 통해 관점에서의 캐주얼 한 모습이 m.를 공개하지 않습니다 등 있다고 믿습니다 각 필드 이름 앞에 붙입니다. Pragma 쿼리 PRAGMA table_info TestView을 실행하면 특성 확장이 표시됩니다.

그래서, 성공적으로 실행해야합니다

CREATE VIEW TestView AS 
SELECT m.ROWID as ROWID, m.MRTarget_id as MRTarget_id,... etc 

와 두 번째 Create View 쿼리에 그리고 TestView 생성 쿼리를 변경 - 적어도 내 응용 프로그램에서했다.

관련 문제