How to apply a customized filter in sqlalchemy? I have tried @hybrid_property and @hybrid_method. However, they are giving errors. Here is my code:
class Product(db.Model):
__tablename__ = 'products'
id = db.Column(db.Integer, primary_key=True)
owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
keywords = db.Column(db.String(64)) # keywords for ease of browsing
details = db.Column(db.Text)
removed = db.Column(db.Boolean, default=False)
@hybrid_method
def toKeywordLevenshteinDistance(self, keywords):
"""
:param user input product keywords
:return Levenshtein(user_input_keywords, product_keywords)
"""
return fuzz.partial_ratio(self.keywords, keywords)
@toKeywordLevenshteinDistance.expression
def toKeywordLevenshteinDistance(cls, keywords):
return func.fuzz.partial_ratio(cls.keywords, keywords)
>>> p=similarProducts('jrjk')
Here is the output:
File "C:\Users\AllWatt\App\flask\myStoreEnv\lib\site-packages\sqlalchemy\engine\default.py",
line 608, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such function: levenshtein
[SQL: SELECT products.id AS products_id, products.owner_id AS products_owner_id,
products.keywords AS products_keywords, products.details AS products_details,
products.removed AS products_removed, products."when" AS products_when FROM products
WHERE levenshtein(products.keywords, ?) > ?] [parameters: ('jrjk', 20)]
(Background on this error at: http://sqlalche.me/e/13/e3q8)
similarProducts?