我这里怎么报错这个呢?
来源: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类型
建议:同学在学习过程中和写代码时一定要认真
学习愉快!
相似问题