在python中查询数据库时可以使用字符串格式吗
我一直在学习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
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))
感谢它的工作,我只是用它学习而不是生产:)如果它有帮助和服务于您的目的,那么请点击答案左侧的大勾号接受答案。:)谢谢你们,但我还是不明白