【问题标题】:python- Insert query to store regex expression in mysql databasepython-插入查询以将正则表达式存储在mysql数据库中
【发布时间】:2017-07-12 23:46:54
【问题描述】:

在 mysql db 中插入对包含 \" 字符的字符串的查询-

如何编写插入查询,例如

这是我要插入表格的字符串,

reg="item-cell\"(.*?)</span></div>"

cur = db.cursor()
query='INSERT into table_name(col_name) values("%s")'%(reg)
cur.execute(query)
cur.close()

以下是错误

_mysql_exceptions.ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'(.*?)</span></div>")\' at line 1')

我知道它与转义字符有关,但不知道如何使它起作用。

编辑: 这个字符串 reg 是可变的,即我从某个 API 获取这个字符串,我想将它插入到我的数据库中。因此,在字符串文字之间插入转义字符不足以满足我的情况。我想要一些可以概括单引号、双引号或一个双引号(例如reg)所有这些情况的东西。

我希望我的观点很清楚。

编辑:这就是我获取 reg 值的方式(来自 json 文件)

import urllib, json
import MySQLdb
url = "some_url"
response = urllib.urlopen(url)
data = json.loads(response.read())
for item in data["key1"]["key2"]["key3"]["key4"]:
    prop=str(item)
    reg=str(data["key1"]["key2"]["key3"]["key4"][prop]["regex"])

【问题讨论】:

    标签: python mysql regex cherrypy


    【解决方案1】:

    问题在于将 json 对象转换为字符串的部分。要在不更改字符串的情况下正确执行此操作,您需要使用 json.dumps

    for item in data["key1"]["key2"]["key3"]["key4"]:
        prop = json.dumps(item)
        reg = json.dumps(data["key1"]["key2"]["key3"]["key4"][prop]["regex"])
    

    【讨论】:

    • 当我只有一个字符串时这很好,但如果我有数千个这样的字符串怎么办。当然,我们不会检查每个字符串。有什么方法可以概括这一点?
    • @ujjawlsaini 我编辑了答案以使用原始字符串,你试过了吗?
    • 是的,这很好用。但是您将字符串 "item-cell\"(.*?)
      " 编写为 r"item-cell\"(.*?)
      " 的方式, 如何为保存字符串的变量写相同的内容。就像说“mystr”是我从一些 API 中得到的,现在如何为这个 reg=r“mystr”编写。我知道这是不正确的,希望你明白我在问什么。
  • 它失败了 - "item-cell\"(.*?)
    " 结果为 "item-cell"(.*?)"
  • 猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多