Python SQL条目不返回搜索结果

2024-09-30 14:36:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在将混合字符串插入sqldb时遇到了问题。 我认为对字符串进行urlencoding是将字符串保存在表中的一种更简单的方法。你知道吗

IE公司

INSERT INTO metadb (name, type , year ) values ( 'Valentine%27s Day', 'movie', '2010')

我的问题是,当我试图用sql查找这个条目时,它什么也不返回。你知道吗

SELECT * FROM metadb WHERE name = 'Valentine%27s Day' and year = '2010' and type = 'movie'

有没有办法克服这个问题?我最好的猜测是它与“%”有关,后者把事情搞砸了。你知道吗

采用Python-SQL平台。你知道吗


Tags: and方法字符串nametype公司movieyear
2条回答

您需要用\字符转义谓词,如下所示:

SELECT * FROM metadb WHERE name = 'Valentine\%27s Day' and year = '2010' and type = 'movie'

你的猜测是对的。%special character in MySQL。另外,在将记录插入表之前,我可能会考虑使用url解码/编码库。你知道吗

你不可能把这个分开吗?例如,您可以这样做:

import urllib2

def main():
    # omitted all the connection stuff...
    query = "INSERT INTO metadb (name, type , year ) values ( %s, %s, %d)"
    params = (escape_string("Valentine's day"), "movie", 2010)
    cursor.execute(query, params)

def escape_string(str):
    return urllib2.quote(str).replace("%","%%")

if __name__ == "__main__":
    main()

然后选择您必须从文档中转义字符串:

请注意,传递给execute()的查询字符串中的任何文字百分号都必须转义,即%%

https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html

希望对你有帮助。你知道吗

//丹尼尔

相关问题 更多 >