2016-08-06 48 views
1

CodeWie suche ich mit Hilfe von sqlalchemy aus chinesischem Zeichen Spalte?

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

Fehler

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 

Minicomputer ist eine Tabelle, chinesischen Schriftzeichen Spaltennamen

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' = ist ein Ausdruck. Sie sagen es, dass Sie gleich der Zeichenfolge "CC670a" sind Ich bin kein SQLAlchemy-Benutzer, also wird keine Antwort zusammen, aber ich vermute, dass Sie nur einen einzigen Wert in der Klammer – Lost

Antwort

0

eine Spaltenzuordnung tun, um diese Fehler behoben

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


    def __repr__(self): 

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

filter_by ist eine Funktion in Keyword-Argumenten nehmen. filter ist eine Funktion, die einen Ausdruck aufnimmt. Also, entweder

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

oder

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

Sie werden auf Python 3 sein müssen, damit dies funktioniert, nebenbei bemerkt, da Python 2 nicht Nicht-ASCII-Bezeichner nicht gestattet.

+0

Python2 haben sollen .7 hier, so gibt es andere Möglichkeit, diesen Fehler zu lösen? Minicomputer.query.filter_by (名称 = 'CC670a') zeigt SyntaxError: ungültige Syntax – Flasking