繁体   English   中英

我可以使用 python 来简化涉及所有列的 SQLite 查询吗?

[英]Can I use python to simplify an SQLite query involving all columns?

我正在研究一个接受字符串输入的函数,然后返回包含该字符串的数据库中列的名称。

con =sqlite3.connect('library.db')
cur = con.cursor()
data=cur.execute('''SELECT * FROM table1''')
def search_word():
word = input("Input search word")
for column in data.description:
    cur.execute('''SELECT ? FROM table1 WHERE ?=?''',(str(column[0]),str(column[0]),str(word),))
    output = cur.fetchone()
    print(output)

search_word()

在上面的函数中,输入 print(column[0]) 成功打印了表中每一列的名称,所以我知道该函数的一部分起作用了。 但是,当我使用我知道在数据库中的搜索词运行该函数时,每次迭代都会产生“无”作为输出。 我究竟做错了什么?

有几个堆栈溢出问题已经解决了这个问题。 请参阅此处此处 简而言之,列名不是安全问题,因此如果您想对它们进行动态处理,则需要对该部分使用常规的 Python 字符串操作,并仅对值使用参数绑定。 像这样的事情应该有效。

for column in data.description:
    query = f'''SELECT {column[0]} FROM table1 WHERE {column[0]} = ?'''
    cur.execute(query,(str(word),))
    output = cur.fetchone()
    print(output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM