2014-02-27 3 views
1

PostgreSQL 함수 lower()를 사용하여 기능 색인을 만들려고합니다. 나는 테이블을 만들 수 증류기를 사용하는 경우이 오류가 발생합니다 :Flask-SQLAlchemy : 함수 색인 만들기

sqlalchemy.exc.ProgrammingError: (ProgrammingError) column "lower" does not exist 
'CREATE INDEX ix_cities_name ON cities (lower)' {} 

여기에 코드입니다 :

from flask import Flask 
from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
db = SQLAlchemy(app) 

class City(db.Model): 
    __tablename__ = 'cities' 

    name = db.Column(db.String(100), nullable=False) 

db.Index('ix_cities_name', db.func.lower(db.metadata.tables['cities'].c.name)) 
+1

이러한 ORM은 기본 SQL 기능 만 이해합니다. 색인 용어를 SQL 텍스트로 수동 작성해야하는 경우에는 놀라지 않을 것입니다. –

+1

http://docs.sqlalchemy.org/en/rel_0_8/core/constraints.html#functional-indexes에 따르면 작동해야하지만 위의 오류가 발생합니다. – user3362454

답변

0

불행하게도 증류기는 (I 희망) 아직 기능 인덱스에 대한 올바른 개정을 생성 할 수 없습니다. 당신은 이런 식으로 할 수

op.execute("CREATE INDEX ix_cities_name ON cities (LOWER(name))") 
1

:

from sqlalchemy import func 

db.Index('ix_cities_name', func.lower(City.name)) 

레퍼런스 : 당신은 이전의 모습이어야한다이 질문에 감사드립니다, 또한

Functional indexes are supported as well, typically by using the 
:data:`.func` construct in conjunction with table-bound 
:class:`.Column` objects:: 

    Index("some_index", func.lower(sometable.c.name)) 

에게, 나는 방법을 알고 색인을 만드십시오!