通过变量更改SQL数据库值

2024-10-03 13:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个数据库,让它尽可能地搜索一个特定的batchnr。 我想做的是:

输入batchnumber:1001 你知道吗

它将给出以下结果:

(1001, 90, 10001, 2, 500, 'Veghel', 100, 300)

然后会问以下问题: “是否要对此进行更改”

您要更改的值存储在“ChangeThis”中,您要更改的值存储在“ToThis”中(必须将其翻译为英语,所以它非常基本)

例如,您将得到如下结果:

(1001, 90, 10001, 2, 500, 'Veghel', 100, 300)
change what: 500
into: 9999

现在我想把这些变量放到我的python SQL代码中我尝试了以下方法:

conn = sqlite3.connect('DATABASE.db')
cur = conn.cursor()
ChangeThis = str(input("which value would you like to change?(value):"))
ToThis = str(input("In what would you like to change this?(value):"))
change = 'UPDATE batch SET ? WHERE ?' (ToThis, ChangeThis)
print(change)
cur.execute(change)

这给了我TypeError:“str”对象是不可调用的

有人知道怎么解决这个问题吗

完整代码如下:

import sqlite3

def create_connection():
    try:
        conn = sqlite3.connect('DATABASE.db')
        return conn
    except Error as e:
        print(e)

def select_all():
    conn = sqlite3.connect('DATABASE.db')
    cur = conn.cursor()
    batchnr = input("batchnumber:")
    sqlquery = 'SELECT * FROM BATCH WHERE BATCHNR ='+ batchnr
    #print(sqlquery)
    cur.execute(sqlquery)

    rows = cur.fetchall()
    for row in rows:
        print(row)
    verander = input("Would you like to change something about this?Y/N: ")
    if verander == 'Y' or verander == 'y':
        veranderen()
    else:
        print("Shutdown")



def veranderen():
    conn = sqlite3.connect('DATABASE.db')
    cur = conn.cursor()
    ChangeThis = str(input("which value would you like to change?(value):"))
    ToThis = str(input("In what would you like to change this?(value):"))
    change = 'UPDATE batch SET ? WHERE ?' (ToThis, ChangeThis)
    print(change)
    cur.execute(change)


create_connection()
select_all()

Tags: toyouinputvalueconnectconnchangesqlite3
1条回答
网友
1楼 · 发布于 2024-10-03 13:23:59

问题是这条线:

change = 'UPDATE batch SET ? WHERE ?' (ToThis, ChangeThis)

您正在定义一个字符串文本,然后尝试像使用参数(ToThis, ChangeThis)的函数一样调用它。这是行不通的,因为正如异常所说,“str”对象是不可调用的。参数不必在那条线上。将它们添加到cur.execute()调用:

change = 'UPDATE batch SET ? WHERE ?'
cur.execute(change, (ToThis, ChangeThis))

…或者只是

cur.execute('UPDATE batch SET ? WHERE ?', (ToThis, ChangeThis))

相关问题 更多 >