执检程序猿 2019-04-04 17:04 采纳率: 0%
浏览 2359
已采纳

flask sqlalchemy 如何查询不特定的字段

1、问题
我想在前端传递不特定字段到后端,比如数据库中有user表有一个姓名字段和一个电话字段,我前端做一个选择下拉框,然后将姓名字段名和电话字段名放在下拉框中
下图为前端时间的代码示例

 <select name="select_sjlx" class="form-control" style="float:left;width:120px;margin-right:5px;">
                <option value="none">时间类型</option>
                    {% for k in sj %}
                        <option value={{ sj[k] }}>{{ k }}</option>
                    {% endfor %}
            </select>
            <input  name="entryDatestart" placeholder="起始日期" id="entry-date-start"
                    type="text" style="float:left;width:100px;margin-right:5px;" v-model="lookupType" class="form-control">
            <input  name="entryDatestop" placeholder="终止日期" id="entry-date-stop"
                    type="text" style="float:left;width:100px;margin-right:5px;" v-model="lookupType" class="form-control">

时间类型为选择框,加入有两个变量,我现在通过name属性将时间类型的value值传递到后端。

queryParams: function queryParams(params) {   //设置查询参数
                    var param = {
                    'pageNumber' : params.pageNumber,
                    'pageSize' : params.pageSize,
                    'select_sjlx':$("#select_sjlx").val(),
                    'entryDatestart':$("#entryDatestart").val(),
                    'entryDatestop':$("#entryDatestop").val(),
                    'select_cxkm':$("#select_cxkm").val(),
                    'lookupcontent':$("#lookupcontent").val()
                    //keyword:params.search,
                    };

后端接收数据代码如下:

    pageNumber=request.args.get('pageNumber',default=1, type=int)
    pageSize = request.args.get('pageSize', default=30, type=int)
    select_sjlx = request.args.get('select_sjlx')
    entryDatestart = request.args.get('entryDatestart')
    entryDatestop = request.args.get('entryDatestop')

查询字符串如下:

    if select_cxkm == 'ZF_id':
        rows = current_user.query.filter(User.字段名.ilike('%'+ lookupcontent +'%')).paginate(
            page=pageNumber,
            per_page=pageSize,
            error_out=False
        )

问题是:如何把查询字符串中的字段名更换为接受到的变量,变量名其实也是字段名,但是是字符串的格式。
我尝试用

b = 'id'
a= 'User.query.filter_by('+b+'=1).first()'
a
'User.query.filter_by(id=1).first()'

的方式处理,但是这个查询语句是一个字符串,怎么转换为查询语句

  • 写回答

3条回答 默认 最新

  • 执检程序猿 2019-04-06 22:39
    关注

    已经找到大神老师解决了,唉,这个搞了我四天,但是真的很简单。直接转换字符串语句执行就行了。
    参考字符串处理函数中的一种

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?