我无法在SQLAlchemy中插入或提交数据

时间:2018-08-13 10:09:57

标签: python sqlalchemy

这就是我的工作

from flaskblog import User, Post

我收到此错误:

Traceback (most recent call last): 
File "<input>", line 1, in <module>
ImportError: cannot import name 'Post'

如果我尝试导入用户并在python控制台中发布,则会出现相同的错误:

ImportError: cannot import name 'Post'.

如果我仅导入用户

from flaskblog import User

我没有错误。

然后我创建user1来插入有关user1.的信息

user1=User(username='rupak' ,email='rupak@demo.com', password='rupak123')

我尝试添加用户,但出现此错误:

db.session.add(user1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'db' is not defined

,并且提交也无法正常工作

我的主程序看起来像这样。用户和帖子有一种关系(一对多)

from  datetime import datetime

from flask import Flask, render_template, url_for

from flask_sqlalchemy import SQLAlchemy

 from templates.form import RegistrationForm, LoginForm


 app = Flask(__name__)

app.config['SECRET_KEY'] = 'f6d2ba3cb4e3ef1e2b330000562a66f0'

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='author',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=Fals


    user_id=db.Column('db.Integer',db.ForeignKey('user.id'),nullable=False)

def  __repr__(self):

    return f"Post('{self.title}','{self.date_posted}')"



  posts = [{'author': 'rupak das', 'title': 'Blog Post1', 'content': 
   'first post content', 'date_post': 'April 01 2018'},
{

    'author': 'tonmy bakshi', 'title': 'Blog Post2', 

    'content': 'second  post content',
    'date_post': 'march 03 2018'}]



   @app.route('/')

   def hello():

  return render_template('home.html', posts=posts)


   @app.route('/about')

 def about():

  return render_template('about.html')








 @app.route('/register')
  def register():
  form = RegistrationForm()
 return render_template('register.html', title='Register', form=form)

  @app.route('/login')
   def login():
   form = LoginForm()
  return render_template('login.html', title='Login', form=form)

 if __name__ == '__main__':
 app.run(port=4494)
 app.run(debug=True)

1 个答案:

答案 0 :(得分:0)

您有很多问题。

1)阅读有关导入功能的文档。

2)类用户的语法不正确(我认为您在复制时只是有一个错误)。

3)db是数据库连接实例。您需要先创建它。

您能提供有关项目文件夹的更多信息吗?