Python 尝试将数据插入sqlite3表时出错

Python 尝试将数据插入sqlite3表时出错,python,sqlite,Python,Sqlite,我试图运行一个sql函数,将数据插入表中。我遵循前面解释的示例,但每当我运行脚本时,都不会将数据插入表中,脚本也不会返回消息。下面是代码:我可能做错了什么 from flask import render_template, flash, redirect, request from app import app from .forms import LoginForm from .forms import RegistrationForm import sqlite3 as sql @app

我试图运行一个sql函数,将数据插入表中。我遵循前面解释的示例,但每当我运行脚本时,都不会将数据插入表中,脚本也不会返回消息。下面是代码:我可能做错了什么

from flask import render_template, flash, redirect, request
from app import app
from .forms import LoginForm
from .forms import RegistrationForm
import sqlite3 as sql

@app.route('/')
@app.route('/index')


@app.route('/registration', methods = ['GET','POST'])
def registration():
    form = RegistrationForm()

    if request.method == 'POST':
      try:
         card_id = request.form['card_id']
         pin = request.form['pin']
         account_id = request.form['account_id']


         with sql.connect("testDB.db") as con:
            cur = con.cursor()

            cur.execute("INSERT INTO atm_card (card_id,pin,account_id) VALUES (?,?,?,?)",(card_id,pin,account_id) )

            con.commit()
            msg = "Record successfully added"
      except:
         con.rollback()
         msg = "error in insert operation"

      finally:
         return render_template("index.html", msg=msg)
         con.close()

    else:
       return render_template("registration.html", form=form)

我看到的一个问题(可能是打字错误或其他问题)是,在INSERT的VALUES子句中有四个占位符,但您似乎只打算指定三列。更改此项:

cur.execute("INSERT INTO atm_card (card_id,pin,account_id) VALUES (?,?,?,?)",(card_id,pin,account_id) )
为此:

cur.execute("INSERT INTO atm_card (card_id,pin,account_id) VALUES (?,?,?)",(card_id,pin,account_id) )