Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

959
Visualizações
Error de SQLAlchemy: "Error de tipo: los argumentos adicionales deben llamarse <nombre del dialecto>_<argumento>, obtuvo 'anulable'"

Problema

Recibo un error al usar Flask cuando sigo un tutorial sobre el uso de Flash. Como soy un programador básico de Python, no entiendo por qué o qué tiene de malo.

Entonces, si no le importa explicarlo o agregar un enlace explicativo.

Error impreso en la consola

(No estoy seguro de lo que es importante, lo siento)

 C:\Users\name\Desktop\Eeverything on this computer\GCSE\Computer Science\free-style\organised\website>python flaskblog.py C:\Users\name\Anaconda3\lib\site-packages\flask_sqlalchemy\__init__.py:835: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. 'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and ' Traceback (most recent call last): File "flaskblog.py", line 22, in <module> class Post(db.Model): File "C:\Users\name\Anaconda3\lib\site-packages\flask_sqlalchemy\model.py", line 67, in __init__ super(NameMetaMixin, cls).__init__(name, bases, d) File "C:\Users\name\Anaconda3\lib\site-packages\flask_sqlalchemy\model.py", line 121, in __init__ super(BindMetaMixin, cls).__init__(name, bases, d) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\ext\declarative\api.py", line 75, in __init__ _as_declarative(cls, classname, cls.__dict__) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\ext\declarative\base.py", line 131, in _as_declarative _MapperConfig.setup_mapping(cls, classname, dict_) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\ext\declarative\base.py", line 160, in setup_mapping cfg_cls(cls_, classname, dict_) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\ext\declarative\base.py", line 190, in __init__ self._setup_table() File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\ext\declarative\base.py", line 538, in _setup_table **table_kw File "C:\Users\name\Anaconda3\lib\site-packages\flask_sqlalchemy\model.py", line 99, in __table_cls__ return sa.Table(*args, **kwargs) File "<string>", line 2, in __new__ File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\util\deprecations.py", line 128, in warned return fn(*args, **kwargs) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 506, in __new__ metadata._remove_table(name, schema) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\util\langhelpers.py", line 68, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\util\compat.py", line 153, in reraise raise value File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 501, in __new__ table._init(name, metadata, *args, **kw) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 600, in _init self._init_items(*args) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 117, in _init_items spwd(self) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\base.py", line 457, in _set_parent_with_dispatch self.dispatch.after_parent_attach(self, parent) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\event\attr.py", line 322, in __call__ fn(*args, **kw) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 2094, in _set_table **self._unvalidated_dialect_kw File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 3132, in __init__ **dialect_kw File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 2711, in __init__ self._validate_dialect_kwargs(dialect_kw) File "C:\Users\name\Anaconda3\lib\site-packages\sqlalchemy\sql\base.py", line 289, in _validate_dialect_kwargs "named <dialectname>_<argument>, got '%s'" % k TypeError: Additional arguments should be named <dialectname>_<argument>, got 'nullable'

Mi código: flaskblog.py

 from flask import Flask, escape, request, render_template, url_for, flash, redirect from flask_sqlalchemy import SQLAlchemy from forms import RegistrationForm, LoginForm from datetime import datetime app = Flask(__name__) app.config["SECRET_KEY"] = "16ee14ac45b13e16aca29d7827e58366" app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///site.db" db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique = True, nullable=False) email = db.Column(db.String(120), unique = True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default="default.jpg") password = db.Column(db.String(60), nullable=False) posts = db.relationship("Post", backref="auther", lazy=True) def __repr__(self): return f"User('{self.username}', '{self.email}', {self.image_file})" class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default = datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey("user.id", nullable=False)) def __repr__(self): return f"Post('{self.title}', '{self.date_posted}')" posts = [ { "auther": "ed", "title": "blog 1", "content": "first post", "sate_posted": "1/1/79" }, { "auther": " not ed", "title": "blog 2", "content": "second post", "sate_posted": "2/1/79" }] @app.route('/') @app.route('/home') def home(): return render_template("home.html", posts=posts) @app.route('/about') def about(): return render_template("about.html", title = "about") @app.route('/register', methods=["GET", "POST"]) def register(): form = RegistrationForm() if form.validate_on_submit(): flash(f"Account created for {form.username.data}!", "success") return redirect(url_for("home")) return render_template("register.html", title = "Register", form = form) @app.route('/login', methods=["GET", "POST"]) def login(): form = LoginForm() if form.validate_on_submit(): if form.email.data == "admin@blog.com" and form.password.data == "password": flash("You have been logged in!", "success") return redirect(url_for("home")) else: flash("Login Unsuccesful. please check username and password", "danger") return render_template("login.html", title = "Login", form = form) if __name__ == '__main__': app.run(debug=True)

Archivos relacionados

Ahora, no sé qué más necesitas, otros archivos que están asociados con esto se llaman:

 forms.py about.html home.html layout.html login.html register.html main.css

No los he agregado porque podría terminar siendo demasiado código innecesario, pero si necesita algo, simplemente deje un comentario.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Parece que cometiste un error tipográfico en el campo user_id de la clase Post .

Tu escribiste:

 user_id = db.Column(db.Integer, db.ForeignKey("user.id", nullable=False))

cuando lo correcto seria:

 user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
over 4 years ago · Santiago Trujillo Relatório

0

Hay un error con respecto a su sintaxis o convención de nomenclatura.

En mi caso, me faltaban s en las listas de nombres de clase (Padre) al hacer referencia a la clave externa en la clase secundaria.

over 4 years ago · Santiago Trujillo Relatório

0

en mi caso hubo un error tipográfico en nullable=False

Escribí nunllable=Falso

resuelto después de corregir el error tipográfico nullable=False

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda