尝试使用 flask 中的触发器自动增加主键并存储在 sqlplus oracle 10g 中

trying to autoincrement primarykey using trigger in flask and storing in sqlplus oracle 10g

'''@app.route("/indexf",methods=["POST","GET"])
def signup():
     conn=cx_Oracle.connect(user="SYSTEM",password="bnm")
     cur= conn.cursor()
     a1=""""create sequence fid_seq"""
     ass=""" create trigger tfarmer
          before insert on farmeruser
           for each row
           begin
           select fid_seq.nextval
          into :new.fid
           from dual
           end;
           /"""
     
   
     
     if request.method == "POST":
            
            fname=request.form.get('fname')
            email=request.form.get('email')
            password=request.form.get('password')
           
            
          
            encpassword=generate_password_hash(password)
            

         
            execute="""INSERT INTO farmeruser VALUES (:fid,:fname,:email,:password)"""
            cur.execute(execute, {'fid':fid,'fname':fname, 'email':email, 'password':encpassword})
     
            conn.commit()

     return render_template('indexf.html') 
'''

我在这里尝试从用户获取 fname、电子邮件、密码和自动增量 fid,它是使用触发器的主键。但我不知道如何将 flask 中的 fid 传递给自动增量

有意思。 10克,真的吗?你在博物馆工作吗? :-) 当前的生产版本是 19c,10g 已经有 20 年的历史了……对不起,开个低俗的玩笑。

所以你的触发器有效,如果你想明确设置 fid 的值(这就是我理解你的问题的方式)你必须更改触发器:

...
begin
IF :new.fid IS NULL THEN
   SELECT fid_seq.nextval INTO :new.fid FROM dual;
   END IF;
END;

如果您决定更改为更新的 Oracle 版本,您可以这样做

:new.fid:= fid_seq.nextval;

而不是 SELECT 语句。