내 모델은 SQLAlchemy의 create_all() 메소드를 사용하여 테이블을 PostgreSQL에서 올바르게 작동하지만 SQLite에서는 작동하지 않습니다. 다양한 열에 Enum을 사용합니다.SQLite의 Enums
이 문제는 Enum을 생성하는 것으로 보이지만, sqlite가 이들을 지원하지 않는다고 말할 수는 있지만 SQLAlchemy의 문서에 따르면 문제가 발생하지 않아야합니다. create_all() sqlite 메모리 db 시도 할 때 그냥 멈추는 경우에도 echo = True 출력 없음 나타납니다.
내가 문제를 보여주기 위해 다음 코드를 시도 :이 스크립트를 실행하면from sqlalchemy import create_engine, Enum
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
e = Enum('foo', 'bar', metadata=Base.metadata)
engine = create_engine('sqlite:///:memory:', echo=True)
Base.metadata.create_all(bind=engine)
그것이 어떠한 출력을 보여줍니다를, 그냥 포장 마차. 파이썬은 100 % CPU를 사용하고 스크립트는 Ctrl-C가 끝날 때까지 끝나지 않습니다.
실제 스키마에서 create_all()을 시도 할 때 테이블이 있는지를 판별하려고하는 PRAGMA 명령을 반향하지만 Enums 작성시에 실속합니다. 나는 이것이 잘 작동 할 때까지 모델 정의에서 코드를 제거하려고 시도했다. 이것이 Enum이라고 생각했을 때였 다.
나는 이것을 SQLite 3.7.13을 사용하여 SQLAlchemy 0.9.6으로 Python 3.4에서 실행하려고 시도했다.
나는 이것이 '열거 형'에 메타 데이터를 전달하는 버그라고 생각합니다. 실제 코드에서 kwarg를 제거하십시오. – Eevee
당신이 옳은 것처럼 보였습니다, 나는 메타 데이터 kwargs를 제거했고 작동합니다. 만약 당신이 그것을 대답에 넣으면 나는 그것을 투표 할 수 있습니다. – Blubber
라이브러리가 꽉 닫히면 버그입니다. [버그 추적기] (https://bitbucket.org/zzzeek/sqlalchemy)로 바로 가십시오. – zzzeek