2016-08-06 4 views
1

コード中国語の文字列からsqlalchemyを使って検索する方法は?

result=Minicomputer.query.filter_by(u'名称'='CC670a').first() 

エラー

Traceback (most recent call last): 
    File "manage.py", line 15, in <module> 
    app = create_app(os.getenv('FLASK_CONFIG') or 'default') 
    File "/mnt/hgfs/python/flask/Project/__init__.py", line 34, in create_app 
    from .main import main as main_blueprint 
    File "/mnt/hgfs/python/flask/Project/main/__init__.py", line 3, in <module> 
    from . import views, errors 
    File "/mnt/hgfs/python/flask/Project/main/views.py", line 95 
    result=Minicomputer.query.filter_by(u'名称'='CC670a').first() 
SyntaxError: keyword can't be an expression 

ミニコンピュータ

engine = create_engine('mysql://root:[email protected]/chhai?charset=utf8', convert_unicode=True, echo=False) 
Base = declarative_base() 
Base.metadata.reflect(engine) 
db_session = scoped_session(sessionmaker(bind=engine)) 
Base.query = db_session.query_property() 

class Storage(Base): 

__table__ = Base.metadata.tables['storage'] 

def __repr__(self): 
    return '<Storage %r>' % self.Storage_Name 
class Minicomputer(Base): 

__table__ = Base.metadata.tables['minicomputer'] 

def __repr__(self): 
    name = u'名称' 
    return '<Minicomputer %r>' % self.ID 
+0

uを解決しない式です。あなたは、 '名前'が文字列 "CC670a"と等しいことを伝えています。私はSQLAlchemyユーザーではないので、答えをまとめませんが、括弧内に単一の値しか持たないと思われます。 – Lost

答えて

0

カラムマッピングは= 'CC670a' '名称' このエラー

class Minicomputer(Base): 
    __table__ = Base.metadata.tables['minicomputer'] 
    name = __table__.c[u'名称'] 


    def __repr__(self): 

     return '<Minicomputer %r>' % self.name 
0

filter_byはキーワード引数に取る関数である中国の文字列名を使用した表です。 filterは、式を取り込む関数です。だから、どちらか

Minicomputer.query.filter_by(名称='CC670a') 

または

Minicomputer.query.filter(Minicomputer.名称 == 'CC670a') 

のPython 2は非ASCII識別子を許可していませんので、あなたは、この方法で、仕事に、このためのPython 3にする必要があります。

+0

Python2 .7ここで、このエラーを解決する他の方法がありますか?Minicomputer.query.filter_by(名称= 'CC670a')はSyntaxErrorを示します:無効な構文 – Flasking

関連する問題