首页 > 解决方案 > 列 Unknown Firebird Python

问题描述

我正在尝试使用 python 和 tkinter 为 firebird 数据库制作 GUI。当我尝试将框中的输入写入数据库时​​,出现错误

fdb.fbcore.DatabaseError: ('Error while preparing SQL statement:\n- SQLCODE: -206\n- Dynamic SQL Error\n- SQL error code = -206\n- Column unknown\n- NUMBER\n- At line 1, column 99', -206, 335544569)

这是提交操作的代码:

simnumbber = "SIM NUMBER"

def submit():

    #  Database connection in the function
    conn = fdb.connect(
    host='localhost', database='C:/SIMCARDS.fdb', user='user', password='password')
    # Cursor
    cur = conn.cursor()
    
    
    # Insert Into table
    cur.execute("""INSERT INTO table ("NUMBER", simnumbber, "OPERATOR", "TYPE", "TARIFF", "DATA", "STATUS") VALUES (:number, :simnumber, :operator, :type, :tariff, :data, :status);""",
    {
        'number': simnumber.get(),
        'simnumber': cardnumber.get(),
        'operator': operator.get(),
        'type': type.get(),
        'tariff': tariff.get(),
        'data': data.get(),
        'status': status.get()  

    })

    # Commit Cahanges
    conn.commit()
    # Close connection
    conn.close()

    # Clear Textboxes
    simnumber.delete(0, END)
    cardnumber.delete(0, END)
    operator.delete(0, END)
    type.delete(0, END)
    tariff.delete(0, END)
    data.delete(0, END)
    status.delete(0, END)

标签: pythonsqlpython-3.xfirebirdfirebird2.5

解决方案


把这个留给任何必须做这样的事情的人。问题在于我在 VALUES 子句的 SQL 查询中提供的参数。Firebird 不知道 ':number' 是什么。所以固定查询是这样的:
cur.execute("""INSERT INTO cards (number,"SIM NUMBER",OPERATOR,TYPE,TARIFF,DATA,STATUS) VALUES (?,?,?,?,?,?,?);""", (simnumber.get(),cardnumber.get(),operator.get(), type.get(), tariff.get(), data.get(), status.get()))


推荐阅读