我遵循關於如何添加用戶定義的運算符的peewee文檔中的簡短指南,但是當我嘗試這樣做時,它會給我一個KeyError。Peewee在嘗試添加用戶定義的運算符時拋出KeyError
from peewee import *
from peewee import OP
from peewee import Expression
db = MySQLDatabase(app.config['MYSQL_DATABASE_DB'], host=app.config['MYSQL_DATABASE_HOST'], user=app.config['MYSQL_DATABASE_USER'], passwd=app.config['MYSQL_DATABASE_PASSWORD'])
OP['MOD'] = 'mod'
def mod(lhs, rhs):
return Expression(lhs, OP.MOD, rhs)
MySQLDatabase.register_ops({OP.MOD: '%'})
class Base(Model):
class Meta:
database = db
class User(Base):
user_id = PrimaryKeyField()
first_name = CharField(max_length = 150)
last_name = CharField(max_length = 150)
@app.route('/')
def test():
query = User.select().where(mod(User.user_id, 2) == 0)
return "Query: %r" % query
當我嘗試運行它,它給了我這個錯誤:
KeyError: 'mod'
任何想法我可能是做錯了?
非常感謝!這正是問題! –
當試圖使用psql數組列類型時,我得到一個KeyError:'A @>'。我需要以某種方式爲它註冊嗎? –
不,但請確保您的數據庫是'PostgresqlExtDatabase',而不是普通的舊'PostgresqlDatabase'。 – coleifer