我这里怎么报错这个呢?
来源:4-3 使用蓝图来改进项目
热爱编程学习
2021-10-30 23:13:20
from datetime import datetime
from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import backref
from qa_flask import constants
app =Flask(__name__,static_folder='assets')
#从配置文件加载配置
app.config.from_object('conf.Config')
# app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:123456@127.0.0.1/test_flask'
db=SQLAlchemy(app=app)
class User(db.Model):
"""用户模型"""
__tablename__='accounts_user'
id=db.Column(db.integer,primary_key=True,autoincrement=True)
username=db.Column(db.String(64),unique=True,nullable=False)
nickname=db.Column(db.String(64))
password=db.Column(db.String(256),nullable=False)
avatar=db.Column(db.String(256))
status=db.Column(db.String(1),
default=constants.UserStatus.USER_ACTIVE.value,
COMMENT='用户状态')
is_super=db.Column(db.SmallInteger,default=constants.UserRole.COMMON.value)
created_at=db.Column(db.DateTime,default=datetime.now,COMMENT='创建时间')
updatated_at=db.Column(db.DateTime,onupdate=datetime.now)
#profile=db.relationship('UserProfile')
class UserProfile(db.Model):
__tablename__='accounts_user_profile'
id=db.Column(db.integer,primary_key=True,autoincrement=True)
username=db.Column(db.String(32),unique=True,unllable=False)
#外键关联
user_id=db.Column(db.integer,db.ForeignKey('accounts_user.id'))
#建立用户一对一熟悉user.profile
user=db.relationship('User',backref=db.backref('profile',uselist=False))
class qa_answer(db.Model):
__tablename__='qa_answer'
id=db.Column(db.integer,primary_key=True,autoincrement=True)
content=db.Column(db.text,nullable=False)
is_valid=db.Column(db.integer(1))
created_at=db.Column(db.DateTime,default=datetime.now)
updated_at=db.Column(db.DateTime,onupdate=datetime.now)
user_id=db.Column(db.Integer,primary_key=True)
q_id=db.Column(db.integer,primary_key=True)
qa_answer_ibfk_1=db.relationship('User',backref=db.backref('answer',uselist=False))
# qa_answer_ibfk_2=db.relationship('q_id',backref=backref('question'),uselist=False)
@app.route('/')
def hello_world():
"""首页"""
return render_template('index.html')
@app.route('/follow')
def follow():
#关注
return render_template('follow.html')
@app.route('/login')
def login():
#登录
return render_template('login.html')
@app.route('/register')
def register():
#注册
return render_template('register.html')
@app.route('/write')
def write():
#写问答
return render_template('write.html')
@app.route('/mine')
def mine():
#个人中心
return render_template('mine.html')
@app.route('/dateil')
def dateil():
#问题详情
return render_template('detail.html')
if __name__=='__main__':
app.run()
import os.path
class Config(object):
"""项目配置文件"""
#数据库的url
SQLALCHEMY_DATABASE_URI='mysql://root:123456@127.0.0.1/test_flask'
#表单
SECRET_KET='abcdsacb12312'
#文件上传根路径
MEDIA_ROOT=os.path.join(os.path.dirname(__file__),'medias')
"""常量配置"""
from enum import Enum
class UserStatus(Enum):
"""用户状态"""
USER_ACTIVE=1
USER_IN_ACTIVE=0
class UserRole(Enum):
"""用户角色"""
COMMON=0
ADMIN=1
"""超级管理员"""
SUPER_ADMIN=2
FLASK_APP = qa_flask/app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder D:/PyCharm/untitled
D:\PyCharm\untitled\venv\Scripts\python.exe -m flask run
* Serving Flask app 'qa_flask/app.py' (lazy loading)
* Environment: development
* Debug mode: off
D:\python3\lib\site-packages\flask_sqlalchemy\__init__.py:873: 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.
warnings.warn(FSADeprecationWarning(
Traceback (most recent call last):
File "D:\python3\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "D:\python3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\__main__.py", line 3, in <module>
main()
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 990, in main
cli.main(args=sys.argv[1:])
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 596, in main
return super().main(*args, **kwargs)
File "D:\PyCharm\untitled\venv\lib\site-packages\click\core.py", line 1062, in main
rv = self.invoke(ctx)
File "D:\PyCharm\untitled\venv\lib\site-packages\click\core.py", line 1668, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "D:\PyCharm\untitled\venv\lib\site-packages\click\core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "D:\PyCharm\untitled\venv\lib\site-packages\click\core.py", line 763, in invoke
return __callback(*args, **kwargs)
File "D:\PyCharm\untitled\venv\lib\site-packages\click\decorators.py", line 84, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "D:\PyCharm\untitled\venv\lib\site-packages\click\core.py", line 763, in invoke
return __callback(*args, **kwargs)
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 845, in run_command
app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 321, in __init__
self._load_unlocked()
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 346, in _load_unlocked
self._app = rv = self.loader()
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 402, in load_app
app = locate_app(self, import_name, name)
File "D:\PyCharm\untitled\venv\lib\site-packages\flask\cli.py", line 256, in locate_app
__import__(module_name)
File "D:\PyCharm\untitled\qa_flask\app.py", line 18, in <module>
class User(db.Model):
File "D:\PyCharm\untitled\qa_flask\app.py", line 26, in User
status=db.Column(db.String(1),
File "D:\python3\lib\site-packages\sqlalchemy\sql\schema.py", line 1677, in __init__
self._extra_kwargs(**kwargs)
File "D:\python3\lib\site-packages\sqlalchemy\sql\schema.py", line 1719, in _extra_kwargs
self._validate_dialect_kwargs(kwargs)
File "D:\python3\lib\site-packages\sqlalchemy\sql\base.py", line 424, in _validate_dialect_kwargs
raise TypeError(
TypeError: Additional arguments should be named <dialectname>_<argument>, got 'COMMENT'
Process finished with exit code 1
1回答
同学,你好!
1、db.Integer中的I应该是大写的,其他位置都需要修改

User表:comment参数应该是小写的

2、参数应是nullable

3、db.Text中的T大写,is_valid应该是db.Boolean类型

建议:同学在学习过程中和写代码时一定要认真
学习愉快!
相似问题