不使用flask sqlalchemy ORM 包创建数据库表架构

时间:2021-03-05 12:00:34

标签: python flask flask-sqlalchemy

我正在尝试创建博客,但在使用 sqlite 作为我的数据库引擎创建数据库时遇到问题,在该引擎中我创建了使用 ORM 定义每个表架构的类 strong> 与 flask-sqlalchemy 以及我注意到的另一件事是它创建了一个空的 blog.db 文件。我现在无法解决我遇到的问题。到目前为止,这是我在使用 Firebase 之前寻求帮助的方法。

models.py

from blogent import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(50), nullable=False)
    last_name = db.Column(db.String(50), nullable=False)
    email = db.column(db.String(50), unique=True, nullable=False)
    image = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(50), nullable=False)
    post = db.relationship('Post', backref='author', lazy=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow())
    updated_at = db.Column(db.DateTime, default=datetime.utcnow())

    def __repr__(self):
        return f"User('{self.email}', '{self.image}', '{self.created_at}')"

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    post_name = db.Column(db.String(30), nullable=False)
    post_title = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    comments = db.relationship('Comments', backref='posts', lazy=True)
    user = db.relationship('User', backref='users', lazy=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow())
    updated_at = db.Column(db.DateTime, default=datetime.utcnow())

    def __repr__(self):
        return f"Post('{self.post_name}', '{self.post_title}', '{self.created_at}')"

class Comments(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    content = db.Column(db.Text, nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.utcnow())
    updated_at = db.Column(db.DateTime, default=datetime.utcnow())

    def __repr__(self):
      return f"Comments('{self.content}', '{self.created_at}')"

init.py

from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///blog.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True
app.config['SECRET_KEY'] = '48ea69eb3539fbe7e069deee6c74d46d'
db = SQLAlchemy(app)

@app.before_first_request
def create_tables():
   db.create_all()

from blogent import routes 

0 个答案:

没有答案