【发布时间】:2020-12-20 17:32:54
【问题描述】:
我有以下 Python 函数,它使用 SQL 代码并给出了特定的关键字来进行一些计算。如何重新定义此函数,使其向用户询问关键字,即关键字不必在 SQL 代码中预定义?
代码如下:
def proto(cursor):
cursor.execute('select protein.accession, keyword from protein JOIN protein_keywords ON protein.accession=protein_keywords.accession JOIN species ON protein.species_id=species.species_id where keyword="Zytocin";')
return cursor.fetchall()
根据答案编辑:
def zroto(cursor):
cursor.execute('select latin AS ART, count(*) AS Antal from protein, species where species.species_id = protein.species_id group by species.species_id;')
return cursor.fetchall()
def proto(cursor):
sql = 'select protein.accession, keyword from protein JOIN protein_keywords
ON protein.accession=protein_keywords.accession JOIN species ON
protein.species_id=species.species_id where keyword = ?;'
k=input('Enter the value of keyword')
cursor.execute(sql,[k],)
return cursor.fetchall()
def main(db_file):
con, cur = get_connection(db_file)
zroto_1 = zroto(cur)
proto_1 = proto(cur)
for row in zroto_1, proto_1:
print(row)
【问题讨论】:
-
我使用的是 sqlite3,对于 python 3.7,我在 Windows 计算机上使用 Spyder。
-
使用
cursor.execute(sql, ("Zytocin",))时只需将%s;替换为? -
那很好,但我想手动输入一个单词,例如“Zytocin”,然后在控制台中得到正确的输出。并不是说我必须在代码中已经输入这个词。我该怎么做?
-
例如,如果我在控制台中输入 proto("Zytocin" ),我只会得到“AttributeError: 'str' object has no attribute 'execute'”。
-
就像我更新了上面问题中的代码一样?