我正在尝试查询一个名为 results 的变量,在该变量中我查询数据库以查找标题类似于从 post 方法接收到的搜索栏输入的书籍。我正在运行的查询如下:
results = db.execute("SELECT * FROM books WHERE title LIKE (%:search%)", {"search": search}).fetchall();
Run Code Online (Sandbox Code Playgroud)
通过上述查询,我收到以下错误:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near "%".
Run Code Online (Sandbox Code Playgroud)
如果我删除 %,或者如果我手动提供LIKEa 参数(例如:),这将按预期工作LIKE ('%the%'),但这并没有真正返回任何结果,除非搜索与数据库中的书名之一完全相同,并且它失败了通过对参数进行硬编码来使用变量替换的目的。我还想知道在使用 SQLAlchemy 查询时是否可以使用 ILIKE 来区分大小写。
我知道我可以使用对象关系映射,并使用不同的函数,例如过滤器函数等等,但是对于这个分配,我们打算不使用 ORM 并使用简单的查询。有什么建议?
我正在使用 Next.js 实现动态路由和 i18n。我的应用程序由 2 个区域设置组成:en-US和es-MX。我正在尝试生成以下路线:
使用默认区域设置 ( en-US),我的链接指向/blog/posts/id并且我能够导航到任何 ID;例如:/blog/posts/1没有任何问题。但是,当我切换区域设置时,我的链接现在指向路线/es-MX/blog/posts/1,这又导致 404 错误 - 未找到。
我的 slug 目录由结构组成pages/blog/posts/[id].js,在这个文件中我用它getStaticPaths来生成上述语言环境的路径:
export const getStaticPaths({locales}) => {
const res = await fetch(`${server}/api/posts`);
const posts = await res.json();
const ids = posts.map((post) => post.id);
const paths = ids.map((id) => ({
params: {id: id.toString(), locale: 'en-US' },
params: {id: id.toString(), locale: 'es-MX' },
}));
return {
paths,
fallback: false,
}; …Run Code Online (Sandbox Code Playgroud)