TEL:400-8793-956
当前位置:程序、服务器

用Flask建立社交网络-peewee OperationalError

提问者: 近期获赞: 浏览人数: 发布时间:2021-02-24 08:31:46

 问:我遇到了与此用户的hcommunity/flask-social-app-peewee-textfield-error类似的问题

 
当我运行代码时,出现此错误
 
peewee.OperationalError:没有这样的表:用户
 
这是完整的追溯,后面是我所有的代码。任何帮助将非常感激。
 
(Treehouse)Nando:Python Nando $ python app.py
 Traceback(最近一次调用):
  文件“ /Users/Nando/Python/Treehouse/lib/python3.5/site-packages/peewee.py”,行3331,在execute_sql
     cursor.execute(sql,params或())
 sqlite3.OperationalError:没有这样的表:user
在处理上述异常期间,发生了另一个异常:
 Traceback(最近一次调用为last):
  文件“ app.py”,第67行,在<模块>     admin = True
  文件“ /Users/Nando/Python/models.py”中的行27中,在create_user
     is_admin = admin中)
  文件“ /Users/Nando/Python/Treehouse/lib/python3.5/site-packages /peewee.py”,行4289,在create
     inst中。
保存(force_insert = True)
 
  在保存    pk_from_cursor = self.insert(** field_dict).execute()
文件“ /Users/Nando/Python/Treehouse/lib/python3.5/site-packages/peewee.py”的行4461中,
  文件“ / Users / Nando / Python / Treehouse / lib / python3.5 / site-packages / peewee.py“,第3113行,在执行
    光标= self._execute()
  文件“ /Users/Nando/Python/Treehouse/lib/python3.5/ _execute中的site-packages / peewee.py“行2535,
    返回self.database.execute_sql(sql,params,self.require_commit)
  文件” /Users/Nando/Python/Treehouse/lib/python3.5/site-packages/ peewee.py”,第3339行,在execute_sql
     self.commit()
  文件“ /Users/Nando/Python/Treehouse/lib/python3.5/site-packages/peewee.py”,第3185行,在__exit__
    reraise(new_type,new_type(* exc_args),traceback)
  文件“ /Users/Nando/Python/Treehouse/lib/python3.5/site-packages/peewee.py”,第123行,在
    raise中增加值。with_traceback(tb)
  在execute_sql     cursor.execute(sql,params或())
 peewee.OperationalError中没有文件“ /Users/Nando/Python/Treehouse/lib/python3.5/site-packages/peewee.py”,行3331,
 peewee.OperationalError:没有此类表:用户
从 烧瓶中 导入 (瓶, 克, render_template , 闪光灯, 重定向, url_for )
从 flask.ext.login 进口 LoginManager
进口形式导入模型DEBUG =真PORT = 8000 HOST = '0.0.0.0'的应用程序=瓶(__name__ )应用程序。secret_key = “小百货!@£$%^,; :: <AlicesAdventuresInWonderland?3117>” login_manager =
 
  LoginManager ()
login_manager 。init_app (应用程序)
login_manager 。login_view  =  'login' 
@ login_manager.user_loader def load_user (userid ):尝试:返回模型。用户。得到(型号。用户。ID ==用户ID ),除了模型。didNotExist :返回无@ app.before_request def before_request ():
 
    “”“在每个请求之前连接到数据库。”“ 
g 。db =模型。数据库g 。db 。connect ()@ app.after_request def after_request (response ):“”“在每个请求之后关闭数据库连接。”“” g 。db 。close ()返回响应@ app.route ('/ register' ,方法= ('GET' ,'POST' ))def寄存器():      
 
      形式。
如果为form,则为RegisterForm ()。validate_on_submit ():flash (“是,您已注册!” ,“成功” )模型。用户。create_user (用户名=形式。用户名。数据,电子邮件=形式。电子邮件。数据,密码=形式。密码。数据)返回重定向(url_for     
        
         ('index' ))
返回render_template ('register.html' ,form = form )@ app.route ('/' )def index ():如果__name__ == ' __main__ ' :models,则返回'Hey' 。initialize ()尝试:模型。用户。create_user (用户名= 'nandoprovin' ,电子邮件= 'nandoprovin@nandoprovin.com' ,密码=      
 
            'password' ,
admin = True ),但ValueError :pass app除外。运行(debug = DEBUG ,host = HOST ,port = PORT )            
 
进口 日期时间
从flask.ext.bcrypt进口generate_password_hash从flask.ext.login进口UserMixin从peewee进口* DATABASE = SqliteDatabase ('social.db' )类用户(UserMixin ,型号):用户名= CharField (唯一=真)电子邮件= CharField (unique = True )密码= CharField
 
      (MAX_LENGTH = 100 )
joined_at = DateTimeField字段(默认=日期时间,日期时间。现在)is_admin = BooleanField (默认值=假)类元:数据库= DATABASE ORDER_BY = ('-joined_at' ,)@classmethod高清create_user (CLS ,用户名,电子邮件,密码,管理员      
 
         = False ):
试试:cls 。创建(用户名=用户名,电子邮件=电子邮件,密码= generate_password_hash (密码),is_admin = admin )除外IntegrityError :引发ValueError (“用户已存在” )def initialize ():DATABASE 。连接()        
 
从 flask_wtf 进口 形式
从 wtforms 进口 StringField , PasswordField
从 wtforms.validators 进口 (DataRequired , 正则表达式, ValidationError , 电子邮件,
长度,EqualTo )从模型导入用户高清name_exists (形式,场):如果用户。选择()。其中(用户。用户名                                 
 
      == 字段。数据)。存在():
提高ValidationError ('用户使用该名称已经存在。' ),DEF email_exists (形式,场):如果用户。选择()。其中(用户。电子邮件==字段。数据)。存在():引发ValidationError ('使用该电子邮件的用户已经存在。' )类RegisterForm (         
 
 格式):
username = StringField ('Username' ,验证器= [ DataRequired (),Regexp (r '^ [a-zA-Z0-9 _] + $' ,message = “用户名应为一个单词,字母,数字和下划线仅)。))(name_exists ] )电子邮件= StringField ('Email' ,验证程序= [ DataRequired (),Email (),email_exists ] )密码= PasswordField
 
      (
'Password' ,验证者= [ DataRequired (),长度(min = 2 ),EqualTo ('password2' ,消息= 'Passwords必须匹配' )] ))password2 = PasswordField ('Confirm Password' ,验证者= [ DataRequired () ] )      
 
 
答:我已经运行了您的代码。您似乎models.initialize()不完整。您连接到数据库,但不基于您的模型创建表。尝试:
 
def  initialize ():
DATABASE 。connect ()数据库。create_tables ([ User ],safe = True )数据库。关闭()    
上一篇: 帮忙看下WordPress网站有没有被黑客攻击了?
下一篇: MySQL与PostgreSQL