我这里怎么报错这个呢?

来源: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

https://img.mukewang.com/climg/617d60f8090b464f04580195.jpg

写回答

1回答

时间,

2021-10-31

同学,你好!

1、db.Integer中的I应该是大写的,其他位置都需要修改

https://img.mukewang.com/climg/617dfb290994701b09970201.jpg

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

https://img.mukewang.com/climg/617dfb4209a5eff211500312.jpg

2、参数应是nullable

https://img.mukewang.com/climg/617dfb6d09ee291209960239.jpg

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

https://img.mukewang.com/climg/617dfb9b09f33f8709840310.jpg

建议:同学在学习过程中和写代码时一定要认真

学习愉快!

0

0 学习 · 2433 问题

查看课程