我正在使用sqlite3作为数据库研究烧瓶和SQLAlchemy。但是,外键验证有一个问题,因为它不能正常工作。我知道用“pragma foreign\u keys=ON”激活这个命令是必要的事件。侦听“,但是使用这个im my代码外键仍然不起作用
代码如下:
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy, event
from sqlalchemy import create_engine
from Controller.BD.sqlLite3_creat import main, getConnect
from Controller.BD import sqlLite3_creat
from Model.ModelChamado import *
from datetime import date, datetime
app = Flask(__name__)
#Parametrização da conexao com o banco de dados
app.config['SQLALCHEMY_DATABASE_URI'] = r'sqlite:///../Controller/BD/RegistroChamado.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
#variavel global de data atual
diaAtual = date.today()
diaAtual = diaAtual.strftime("%d/%m/%Y")
#converter o objeto em datetime
diaAtual = datetime.strptime(diaAtual, '%d/%m/%Y')
database_url = r'..\Controller\BD\RegistroChamado.db'
#Ativar validação FK para o sqlite3
engine = create_engine(r'sqlite:///../Controller/BD/RegistroChamado.db')
def _fk_pragma_on_connect(con = getConnect(database_url)):
con.execute('pragma foreign_keys=ON')
event.listen(engine, 'connect', _fk_pragma_on_connect)
def main():
#realiza a criação do banco de dados
sqlLite3_creat.main(database_url)
#Realiza a criação das tabelas
sqla.create_all()
#Inicio
@app.route("/")
def index():
main()
return render_template("index.html")
#Registrod e novos chamados
@app.route("/registrarchamado")
def paginaDeRegistroChamados():
tpChamados = TipoChamado.query.all()
sistemas = Sistema.query.all()
origemReclamacao = OrigemReclamacao.query.all()
return render_template("registrarChamado.html", tpchamados = tpChamados, sistemas = sistemas, origemReclamacao = origemReclamacao )
sqlLite3_creat.main -> Just create an empty database;
sqla -> is SQLAlchemy object from the class where I defined my models;
谢谢。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐