【发布时间】:2022-01-19 03:13:46
【问题描述】:
我有一个关于仅通过一个或多个字母搜索产品(表格)并找到我想要的列(名称、描述和类型)的问题,但我在使用关键字时遇到了问题。我知道它应该是一个字符串,但我想不出办法。 现在我有这个
@app.route('/product/<keyword>', methods=['GET'])
def product_search(kw):
logger.info('GET /product/<keyword>')
logger.debug(f'keyword: {kw}')
conn = db_connection()
cur = conn.cursor()
try:
cur.execute('SELECT id, type, name, price from product where name like s% or type like s% or description like %s', (kw,))
rows = cur.fetchall()
row = rows[0]
logger.debug('GET /product/{keyword} - parse')
logger.debug(row)
content = {'id': int(row[0]), 'type': row[1], 'name': row[2], 'price': row[3], 'description': row[5]}
response = {'status': StatusCodes['success'], 'results': content}
except (Exception, psycopg2.DatabaseError) as error:
logger.error(f'GET /product/{keyword} - error: {error}')
response = {'status': StatusCodes['internal_error'], 'results': str(error)}
finally:
if conn is not None:
conn.close()
return flask.jsonify(response)
我也想知道我是否可以这样做
cur.execute('SELECT id, type, name, price from product where name like s% or type like s% or description like s%
%s', (kw,))
一种基本执行程序的方法,但例如使用字母 c 来搜索可乐之类的产品
'SELECT id, type, name, price from product where name like '%c' or type like '%c' or description like '%c%'
换句话说,我希望它的名称和类型按第一个字母搜索,并按句子中间的描述搜索。
【问题讨论】:
标签: python postgresql psycopg2