python - 在 SQL 中搜索一个字段以查看它是否包含 python 变量

标签 python mysql python-2.7

我正在使用 Canari 框架在 Malteog 中构建一系列转换,扫描 MySQL 数据库并将结果作为实体返回。

除了 SQL 语句中的 LIKE 运算符,我已经得到了所有的东西。这是代码:

#===========================================================================
# Request and set target from graph

target = (request.entity.value)

#===========================================================================
# Extract message column and check against target entity

statement = (
    "SELECT * FROM tableT.TTO WHERE Text LIKE %(tq)s"
)

cursor.execute(statement, { 'tq': target })

results = cursor.fetchall()

#===========================================================================
# Create response entities based on SQL output

for r in results:

    e = getTTO(target)
    e.From = r[0]
    e.Text = r[1]
    e.date = r[2]
    e.iconurl = 'http://local.paterva.com/phrase.png'
    response += e

它有效,但它只返回完全匹配的结果。我需要它来检查 TEXT 列以查看条目是否包含变量“target”的任何提及。我花了一天的大部分时间来获取传入的 python 变量,但我无法让它返回除完全匹配之外的任何内容。

最佳答案

SQL LIKE 运算符在值之前和/或之后需要特殊的“通配符”标记(MySQL 中的“%”)(取决于您是否想要“开始于”、“结束于”或“包含”搜索)。你必须在你的论点周围添加这些通配符,即:

cursor.execute(statement, {'tq': "%{}%".format(target)})

另请注意,cursor.fetchall() 会将您的整个结果集加载到内存中,这会请求 MemoryErrorcursor 对象是可迭代对象,这样使用它们更安全:

cursor.execute(statement, {'tq': "%{}%".format(target)})
for row in cursor:
    do_something_with(row)

关于python - 在 SQL 中搜索一个字段以查看它是否包含 python 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38200291/

相关文章:

python - Django 两个来自同一模型的外键

python - 在 django 管理中点亮的下拉列表中过滤字段

python2.7 xlsxwriter 写入的行数不超过 65533 行

python - 如何定义嵌套在类下的 Pydantic 模型

mysql - 具有不同列值的行的平均时间差

mysql - 使用临时文件,使用 filesort with order 和 group by

php - 收到我的查询为空的响应

python - 限速 Python 中的无限 While 循环

django 全局对象实例可访问性

python - 大量数据的散点图