当前位置: 首页 > 知识库问答 >
问题:

使用where表达式执行mysql查询

苏麒
2023-03-14

我使用此函数运行SQL查询:

@staticmethod
def find_users(query):
    search_job = query
    # search_formatted = ' & '.join(words)

    sql = ("""SELECT first_name,last_name, email, phone, image, diplome, latitude, longitude, description
    FROM users, jobs
    WHERE users.id_job = jobs.id
    AND jobs.description = ?
           """, [search_job])
    cursor = db.session.execute(sql)
                                # {'search_terms': search_job})

    # Returns a list of product tuples
    return cursor.fetchall()

但是我得到了这个错误

2017-08-05 18:54:18,421 INFOsqlalchemy.engine.base.Engine(4L,)2017-08-05 18:54:18,424 INFOsqlalchemy.engine.base.Engine COMMIT127.0.0.1--[05/Aug/2017 18:54:18]"GET/HTTP/1.1"200-127.0.0.1 - - [05/Aug/2017 18:54:19]"GET /static/img/markers_shadow.pngHTTP/1.1"404-127.0.0.1--[05/Aug/2017 18:54:19]"GET /static/fonts/glyphicons-halflings-regular.woff2HTTP/1.1"404-127.0.0.1--[05/Aug/2017 18:54:19]"GET /static/fonts/glyphicons-halflings-regular.woffHTTP/1.1"404-127.0.0.1-[05/Aug/2017 18:54:19]"GET /static/fonts/glyphicons-halflings-regular.ttfHTTP/1.1"404-[2017-08-05 18:54:23,162]应用程序中的错误:异常 /auth/search[GET]Traceback(最近的调用最后): File"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/flask/app.py",第1988行,wsgi_app响应=self.full_dispatch_request()File"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/flask/app.py",第1641行,full_dispatch_requestrv=self.handle_user_exception(e)File"/Home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/烧瓶/app.py",第1544行,handle_user_exception(exc_type,exc_value,tb)File"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/烧瓶/app.py",第1639行,full_dispatch_requestrv=self.dispatch_request()File"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-pack/flask/app.py",第1625行,dispatch_request返回self.view_functionsrule. endpoint File"/home/alaoui/Documents/ProjetHandy/handy_2/app/auth/view. py",第194行,在search_handymanhandyman=User.find_handymans(search_query)File"/home/alaoui/Documents/ProjetHandy/handy_2/app/模型. py",第88行,在find_handymanscursor=db.会期.执行(sql)File"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/sqlalChemy/orm/范围. py",第157行,在do返回getattr文件"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/sqlalChemy/orm/session. py",第1101行,在执行子句=表达式中。_literal_as_text(子句)文件"/home/alaoui/Documents/ProjetHandy/venv-handy/lib/python2.7/site-包/sqlalChemy/sql/elements. py",第4238行,在_literal_as_text“代替”%type(元素)ArgumentError: SQL表达式对象或字符串预期,得到类型的对象代替

共有1个答案

夏侯华彩
2023-03-14

如果您查看执行的签名,您会发现:

execute(clause, params=None, mapper=None, bind=None, **kw)

然后,查看文档,您会发现:

参数:

>

  • 子句–要执行的可执行语句(即可执行表达式,如expression.select())或字符串SQL语句。

    params–可选字典或字典列表,包含绑定参数值。如果是单个字典,则执行单行;如果需要字典列表,将调用“executemany”。每个字典中的键必须与语句中的参数名相对应。

    mapper–可选的mapper()或mapped类,用于标识适当的绑定。定位绑定时,此参数优先于子句。见会议。获取_bind()以了解更多详细信息。

    绑定–用作绑定的可选引擎。如果此引擎已参与正在进行的事务,则将使用该连接。定位绑定时,此参数优先于映射器和子句。

    **kw-额外的关键字参数被发送到Session.get_bind(),以允许绑定方案的可扩展性。

    使用调试器逐步检查代码,并查看针对该签名实际传递的参数。您会发现您的第二个参数,[search\u job]不满足任何预期参数,因此您得到

    ArgumentError:应为SQL表达式对象或字符串,改为获取类型为的对象

  •  类似资料:
    • 主要内容:查询以特定字符或字符串开头的记录,查询以特定字符或字符串结尾的记录,替代字符串中的任意一个字符,匹配多个字符,匹配指定字符串,匹配指定字符串中的任意一个,匹配指定字符以外的字符,使用{n}或者{nm}来指定字符串连续出现的次数正则表达式主要用来查询和替换符合某个模式(规则)的文本内容。例如,从一个文件中提取电话号码,查找一篇文章中重复的单词、替换文章中的敏感语汇等,这些地方都可以使用正则表达式。正则表达式强大且灵活,常用于非常复杂的查询。 MySQL 中,使用 REGEXP 关键字指定

    • 问题内容: 我如何使它对任何数字格式和任何数字都有效 目前仅对1-999-999-9999有效 问题答案: 采用: 参考: 模式匹配

    • 本文向大家介绍mysql中如何使用正则表达式查询,包括了mysql中如何使用正则表达式查询的使用技巧和注意事项,需要的朋友参考一下 基本形式 属性名 regexp ‘匹配方式' 正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where name regexp '^L'; eg2: 从info表name字段

    • 问题内容: 假设我有一个称为电话号码的属性,并且我想对该字段的条目强制执行某些有效性。我可以为此使用正则表达式,因为正则表达式在定义约束时非常灵活。 问题答案: 是的你可以。MySQL支持正则表达式(http://dev.mysql.com/doc/refman/5.6/en/regexp.html),并且由于MySQL不支持CHECK约束,因此应该使用触发器进行触发(您始终可以移至Postgre

    • 问题内容: 我有一个简单的任务,我需要搜索一个以字符串字符和其后的一位数字开头的记录。我正在尝试的是 和 但是两个查询总是返回一条记录 好像我执行以下查询 它返回 这意味着我有以ALA开头的记录,其后是一个数字, 编辑 我正在使用PHP MySQL和innodb引擎来实现它。 问题答案: 我认为您可以使用REGEXP代替LIKE

    • 所以,我想知道是否可以在C#中做下一件事: 我有一个DB模型--假设它是 : 和 中该类型的DbSet: 我还有一个 问题是--有可能用不同的IN对象动态构建linq WHERE表达式吗? null