- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
_ 问题 最佳答案 看起来您在 关于python - SQLAlchemy 错误 : "TypeError: Additional arguments should be named <dialectname>_<argument>, got ' nullable'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59057276/ 问题 在学习有关使用 Flash 的教程时,我在使用 Flask 时遇到错误。 由于我是一个基本的 Python 程序员,我不明白它为什么或有什么问题。 所以如果你不介意解释它或添加一个解释链接。 控python - SQLAlchemy 错误 : "TypeError: Additional arguments should be named
在学习有关使用 Flash 的教程时,我在使用 Flask 时遇到错误。
由于我是一个基本的 Python 程序员,我不明白它为什么或有什么问题。
所以如果你不介意解释它或添加一个解释链接。
控制台打印错误
(不知道什么是重要的,抱歉)
我的代码:
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'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)
现在,我不知道您还需要什么,与此相关的其他文件称为:
我没有添加它们,因为它最终可能会成为太多不必要的代码,但是如果您需要任何东西,请发表评论。
forms.py
about.html
home.html
layout.html
login.html
register.html
main.cssuser_id
中打错了字字段来自 Post
类(class)。
你写了:
user_id = db.Column(db.Integer, db.ForeignKey("user.id", nullable=False))
正确的时候是:
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
我是一名优秀的程序员,十分优秀!