Apr-02-2018, 12:16 PM
hi,
I have created a program that will take user input in form in flask and will save it to sqlite3 , but whenever i submit it i receive the following error
I have created a program that will take user input in form in flask and will save it to sqlite3 , but whenever i submit it i receive the following error
Error:sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type. [SQL: 'INSERT INTO otrs ("Agent", "Date", "XID_Number", "RERA_Number", "RERA_URL", "City", "State", "Data_Types", creation_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'] [parameters: (<>, '', '', '', '', '', '', 'OTRS', None)] (Background on this error at: http://sqlalche.me/e/rvf5)
This is my db_creaor file:from sqlalchemy import create_engine, ForeignKey from sqlalchemy import Column, Date, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, backref, sessionmaker import psycopg2 engine = create_engine("sqlite:///dashboard.db", echo=True) Base = declarative_base() class creation(Base): __tablename__ = "rera" id = Column(Integer, primary_key=True) name = Column(String) ## def __init__(self, name): ## ## """""" ## self.name = name def __repr__(self): return "<creation: {}>".format(self.name) class OTRS(Base): """""" __tablename__ = "otrs" id = Column(Integer, primary_key=True) Agent = Column(String) Date = Column(Date) XID_Number = Column(String) RERA_Number = Column(String) RERA_URL = Column(String) City = Column(String) State = Column(String) Data_Types = Column(String) creation_id = Column(Integer, ForeignKey("rera.id")) create = relationship("creation", backref=backref( "otrs", order_by=id)) ## def __init__(self, Agent, Date, XID_Number,RERA_Number,RERA_URL,City, State, Data_Types): ## ## """""" ## self.Agent = Agent ## self.Date = Date ## self.XID_Number = XID_Number ## self.RERA_Number = RERA_Number ## self.RERA_URL = RERA_URL ## self.City = City ## self.State = State ## self.Data_Types = Data_Types ## # create tables Base.metadata.create_all(engine)This is my main.py
from app import app from db_setup import init_db, db_session from forms import DataSearchForm, DataForm from flask import flash, render_template, request, redirect from models import OTRS, creation from sqlalchemy.orm import sessionmaker init_db() @app.route('/', methods=['GET', 'POST']) def index(): search = DataSearchForm(request.form) if request.method == 'POST': return search_results(search) return render_template('index.html', form=search) @app.route('/results') def search_results(search): results = [] search_string = search.data['search'] if search.data['search'] == '': qry = db_session.query(OTRS) results = qry.all() if not results: flash('No results found!') return redirect('/') else: # display results return render_template('results.html', results=results) @app.route('/new_data', methods=['GET', 'POST']) def new_data(): """ Add a new data """ form = DataForm(request.form) if request.method == 'POST' and form.validate(): # save the FORM otrs = OTRS() print(otrs) save_changes(otrs, form, new=True) flash('Form created successfully!') return redirect('/') return render_template('new_data.html', form=form) def save_changes(otrs, form, new=False): """ Save the changes to the database """ # Get data from form and assign it to the correct attributes # of the SQLAlchemy table object Agent = creation() Agent.name = form.Agent.data otrs.Agent = Agent #otrs.Agent = form.Agent.data otrs.Date = form.Date.data otrs.XID_Number = form.XID_Number.data otrs.RERA_Number = form.RERA_Number.data otrs.RERA_URL = form.RERA_URL.data otrs.City = form.City.data otrs.State = form.State.data otrs.Data_Types = form.Data_Types.data if new: # Add the new data to the databae db_session.add(otrs) db_session.commit() # commit the data to the databa if __name__ == '__main__': app.run()this is my db.setup:
# db_setup.py from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.ext.declarative import declarative_base import psycopg2 engine = create_engine('sqlite:///dashboard.db', convert_unicode=True) db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): import models Base.metadata.create_all(bind=engine)this my models.py
from app import db class creation(db.Model): __tablename__ = "rera" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) ## def __init__(self, name): ## ## """""" ## self.name = name def __repr__(self): return "<{}>".format(self.name) class OTRS(db.Model): """""" __tablename__ = "otrs" id = db.Column(db.Integer, primary_key=True) Agent = db.Column(db.String) Date = db.Column(db.String) XID_Number = db.Column(db.String) RERA_Number = db.Column(db.String) RERA_URL = db.Column(db.String) City = db.Column(db.String) State = db.Column(db.String) Data_Types = db.Column(db.String) creation_id = db.Column(db.Integer, db.ForeignKey("rera.id")) create = db.relationship("creation", backref=db.backref( "otrs", order_by=id), lazy=True) ## def __init__(self, Agent, Date,XID_Number,RERA_Number,RERA_URL,City, State, Data_Types): ## ## """""" ## self.Agent = Agent ## self.Date = Date ## self.XID_Number = XID_Number ## self.RERA_Number = RERA_Number ## self.RERA_URL = RERA_URL ## self.City = City ## self.State = State ## self.Data_Types = Data_Typescan anyone please tell how to solve this error ?