回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在做一个小的宠物项目,它组织人们的漫画书,并将他们的元数据存储在一个SQL数据库中。为了正确起见,我使用的是准备好的语句,而不是Python内置的字符串操作符,但是我不能让它正常工作。这是我为说明我遇到的问题而编写的简短代码片段:</p>
<pre><code>#!/usr/bin/env python
import sqlite3
connection = sqlite3.connect("MyComicBox.db")
curs = connection.cursor()
curs.execute("CREATE TABLE IF NOT EXISTS comic_collection (id INTEGER PRIMARY KEY, series TEXT, publisher TEXT, issue TEXT, tags TEXT)")
connection.commit()
def addComic(series = "", publisher = "", issue = "", tags = ""):
curs.execute("INSERT INTO comic_collection (series, publisher, issue, tags) VALUES(?, ?, ?, ?)", (series, publisher, issue, tags))
connection.commit()
def search(attribute, val):
"""
Do an SQL query for all comics where attribute LIKE val and return a list of them.
"""
# cmd = "SELECT * from comic_collection WHERE %s LIKE '%s'" % (attribute, val)
# curs.execute(cmd)
cmd = "SELECT * from comic_collection WHERE ? LIKE ?"
curs.execute(cmd, (attribute, val))
results = []
for comic in curs:
results.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(comic)
return results
addComic(series = "Invincible Iron Man", issue = "500", publisher = "Marvel Comics", tags = "Iron Man; Spider-Man; Mandarin")
searchResults = search("issue", "500")
for item in searchResults:
print item
</code></pre>
<p>我的问题在于搜索功能。查询不会返回任何内容,除非我使用替换执行cmd的两行?运算符,其中有两行(注释掉),我使用Python内置的字符串运算符执行cmd。有谁能帮我弄清楚我做错了什么吗?</p>