我正在尝试使用SQLAlchemy
运行一些数据库查询。但我在查询具有撇号或任何非字母数字字符的字符串时遇到问题。
例如:test =“我已经”
我用过:
matchList = session.query(Quote).filter(Quote.quote.contains(test)).all()
数据库中有1条记录包含"I've"
作为子字符串。但是,matchList结果是一个空列表。我做错了什么?
完整代码:
sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy_declarative import Base, Quote
from sqlalchemy_utils import escape_like
engine = create_engine("sqlite:///quotes.db")
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()
test = "I\'ve"
qList = session.query(Quote).filter(Quote.quote.contains(test.replace('\'', ''))).all()
print qList
似乎SQLAlchemy
不处理转义序列。任何人都可以帮忙
答案 0 :(得分:1)
python string literal
"I\'ve"
评估字符串
"I've"
但是,您可能需要在数据库输入中使用实际的反斜杠,因此请尝试转义反斜杠而不是单引号:
"I\\'ve"
所有这一切,可能有更好的方法来逃避我不知道的SQLAlchemy中的查询。像db.find(Quote.quote == "I've")
之类的东西,它会为你逃避。