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

我是编程新手,从 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)

我怀疑它不起作用希望你能帮忙!:)


叮当猫咪
浏览 278回答 2
2回答

吃鸡游戏

以下行{}用变量的内容替换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)

侃侃无极

你在混合东西。Format 是 Python 字符串对象的一种方法,用于根据代码中的变量动态生成字符串。在您的第一个示例中定义数据库名称是正确的。问题标记作为查询值的占位符是 SQL 的特性,并且必须像第二个示例中那样在没有格式的情况下使用。要修复您的代码,首先使用格式构建查询的字符串模板来定义数据库名称。然后,使用 execute 执行结果字符串并传递针对问号的参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python