首页 > 解决方案 > 我无法在 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)

标签: pythonsqlalchemy

解决方案


你有很多问题。

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

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

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

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


推荐阅读