在python中查询数据库时可以使用字符串格式吗

在python中查询数据库时可以使用字符串格式吗,python,sql,sqlite,Python,Sql,Sqlite,我一直在学习python中的sqlite3,我想知道是否可以使用字符串格式来编辑或查询数据库 e、 g.-从(表名称)中选择%s,其中%可以作为用户输入存储在变量中 我试过了,但它不起作用,所以请有人给我一个工作的例子 感谢您的帮助。谢谢 伙计们,我试过这个: dursor = conn.execute("SELECT id FROM books") # this helps find the correct id for storing in the database for i in dur

我一直在学习python中的
sqlite3
,我想知道是否可以使用字符串格式来编辑或查询数据库

e、 g.-
从(表名称)中选择%s,其中%
可以作为用户输入存储在变量中

我试过了,但它不起作用,所以请有人给我一个工作的例子

感谢您的帮助。谢谢

伙计们,我试过这个:

dursor = conn.execute("SELECT id FROM books")
# this helps find the correct id for storing in the database
for i in dursor:
lis.append(i[0])
command = """INSERT INTO books VALUES ({0}, {name}, {author})""".format(lis[-1] + 1, name=client_name, author = client_author)
然后

conn.execute(command)
但它不返回这样的列(名称)


当我在khan academy sql中尝试相同的查询时,为什么不在这里呢?

我不确定您是否可以在sqlite3中进行查询,但如果我是您,我会寻找任何替代方法。您真的想让用户能够实时更改SQL吗?这可能会造成一个巨大的安全漏洞

e、 用户可以从本质上改变

select ? from innocentTable 
…到

select * from tblUser -- from innocentTable
…然后搜索整个用户表,只需猜测一下对象名称


我建议您仔细阅读SQL注入攻击,然后寻找另一种方法来实现您的建议。

您可以在查询字符串上打问号,并在以元组形式调用.execute()时从用户输入中传递参数

虽然我不相信你在制作中使用它。如果是这样的话,首先从用户那里获取数据,对其进行清理,看看您是否真的想让用户做他真正想做的事情

希望这有助于:

param1 = sys.argv[1]
param2 = sys.argv[2] 
query = "SELECT ? FROM (table_name) where id = ?"
cursor.execute(query, (param1,param2))

感谢它的工作,我只是用它学习而不是生产:)如果它有帮助和服务于您的目的,那么请点击答案左侧的大勾号接受答案。:)谢谢你们,但我还是不明白