2011-12-07 6 views
0

SQLAlchemy가 H2 db를 지원합니까? 피라미드를 사용 중이며 H2 db 데이터베이스에 연결하려고합니다. 포스트 그레스 사투리를 사용하는 경우, 나는 다음과 같은 오류를 받고 있어요 :SQLAlchemy가 H2DB를 지원합니까?

File "/Users/homecamera/gotocamera/hcadmin/env/lib/python2.7/site-packages/SQLAlchemy-0.7.3-py2.7-macosx-10.4-x86_64.egg/sqlalchemy/dialects/postgresql/base.py", line 871, in initialize 
super(PGDialect, self).initialize(connection) 
File "/Users/homecamera/gotocamera/hcadmin/env/lib/python2.7/site-packages/SQLAlchemy-0.7.3-py2.7-macosx-10.4-x86_64.egg/sqlalchemy/engine/default.py", line 181, in initialize 
self.get_isolation_level(connection.connection) 
File "/Users/homecamera/gotocamera/hcadmin/env/lib/python2.7/site-packages/SQLAlchemy-0.7.3-py2.7-macosx-10.4-x86_64.egg/sqlalchemy/dialects/postgresql/base.py", line 910, in get_isolation_level 
cursor.execute('show transaction isolation level') 
ProgrammingError: Syntax error in SQL statement "SELECT "; expected "TOP, LIMIT, DISTINCT, ALL, *, NOT, EXISTS"; SQL statement: 
show transaction isolation level [42001-140] 
DETAIL: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT "; expected "TOP, LIMIT, DISTINCT, ALL, *, NOT, EXISTS"; SQL statement: 
show transaction isolation level [42001-140] 

답변

2

AFAIK는 HSQLDB 방언 또는 기본 H2 방언 중 하나에 대한 공식적인 지원이 없습니다. HSQLDB를 사용하지 않고 H2와 함께 Postgres 사투리를 사용하면 분명히 오류가 발생합니다.

sqlalchemy-jython을 시도하고 H2 방언을 사용하는 것이 더 나을 것입니다.

+0

감사합니다. 현재 psycopg를 사용하여 직접 SQL로 H2에 연결하고 있습니다. – carbotex

+0

@carbotex, 어떻게 할 수 있니? psycopg를 메모리 내장 데이터베이스에 연결하는 데 어려움을 겪고 있습니다. 인증 단계를 통과 할 수 없습니다. 어떤 단서가 인정됩니다. – tavlima

0

누구나 다시이 문제가 발생하면이 실행을 (sqlite의 대안으로) 시도하고 부분적으로 만 작동하며 작동하는 유일한 드라이버는 pg8000입니다. 서버가 사용하는 실행으로

:

nohup java -cp /opt/h2/bin/h2*.jar org.h2.tools.Server -pg -pgAllowOthers -pgPort 5435 -baseDir /opt/h2-data & 

이 코드는 SQLAlchemy의 작동합니다

from sqlalchemy import create_engine 
engine = create_engine('postgresql+pg8000://sa:[email protected]:5435/main') 
engine.execute("SELECT 1") 

그러나이 코드는 예외가 발생합니다 : sqlalchemy_utils에서 이 CREATE_DATABASE에게 CREATE_DATABASE ('PostgreSQL의 + pg8000를 가져옵니다 // sa : sa @ localhost : 5435/main ')

예외 :

sqlalchemy.exc.ProgrammingError: (pg8000.core.ProgrammingError) ('ERROR', 
'HY000', 'General error: "java.lang.IllegalStateException: output binary 
format is undefined" [50000-196]', 'org.h2.jdbc.JdbcSQLException: General 
error: "java.lang.IllegalStateException: output binary format is undefined" 
[50000-196]') [SQL: 'select version()'] 
관련 문제