为了账号安全,请及时绑定邮箱和手机立即绑定

SQLite - 如何将变量用于表名 + 变量用于插入值

SQLite - 如何将变量用于表名 + 变量用于插入值

叮当猫咪 2023-03-16 17:55:30
我是编程新手,从 python 开始我在帖子中找到了这个脚本(下面的链接)query = 'SELECT * FROM {}'.format(table) c.execute(query)如何为 SQLite 表名使用变量它有效,但现在我必须增加一些复杂性并且不知道如何......我之前有这个:def add(order, theme):    parameters = [order, theme]        c.execute("INSERT INTO TABLE_NAME VALUES(NULL, ?,?)", parameters)所以我尝试使用相同的,但可以自由选择表的名称。尝试这样的事情,但真的不知道它的语法:def add(order, theme):    table = input("with what table do you want to work with? ")    parameters = [order, theme]     insert = 'INSERT INTO {} VALUES(NULL, ?,?)'.format(table, parameters)    c.execute(insert)我怀疑它不起作用希望你能帮忙!:)
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

以下行{}用变量的内容替换table并将结果存储在变量查询中。 format适用于任何字符串:


query = 'SELECT * FROM {}'.format(table) 

另一方面,通过将字符串中的c.execute替换?为列表中的值来完成的替换类型parameters:


c.execute("INSERT INTO TABLE_NAME VALUES(NULL, ?,?)", parameters)

您可以将它们结合起来以达到您想要的效果:


table = input("with what table do you want to work with? ")

query = 'INSERT INTO {} VALUES(NULL, ?, ?)'.format(table)

parameters = [order, theme]

c.execute(query, parameters)


查看完整回答
反对 回复 2023-03-16
?
侃侃无极

TA贡献2051条经验 获得超10个赞

你在混合东西。

Format 是 Python 字符串对象的一种方法,用于根据代码中的变量动态生成字符串。在您的第一个示例中定义数据库名称是正确的。

问题标记作为查询值的占位符是 SQL 的特性,并且必须像第二个示例中那样在没有格式的情况下使用。

要修复您的代码,首先使用格式构建查询的字符串模板来定义数据库名称。然后,使用 execute 执行结果字符串并传递针对问号的参数。


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信