SQL alchemy

form.py

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo


class RegistrationForm(FlaskForm):
    username = StringField('Username',
                           validators=[DataRequired(), Length(min=2, max=20)])
    email = StringField('Email',
                        validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    confirm_password = PasswordField('Confirm Password',
                                     validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')


class LoginForm(FlaskForm):
    email = StringField('Email',
                        validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    remember = BooleanField('Remember Me')
    submit = SubmitField('Login')

flaskblog.py

from datetime import datetime
from flask import Flask,render_template,url_for,flash,redirect
from forms import RegistrationForm, LoginForm
from flask_sqlalchemy import SQLAlchemy

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=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

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

创建User

from flaskblog import User,Post
from flaskblog import db
user_1 = User(username='Corey',email='C@demo.com',password='password')
db.session.add(user_1)
user_2 = User(username='JohnDoe',email='jd@demo.com',password='password')
db.session.add(user_2)
db.session.commit()

查询

User.query.all()

Out[12]:
[User('Corey', 'C@demo.com', 'default.jpg'),
 User('JohnDoe', 'jd@demo.com', 'default.jpg')]
user=User.query.get(1)
user
Out[17]: User('Corey', 'C@demo.com', 'default.jpg')

user.id
Out[18]: 1

创建Post

post_1 = Post(title='Blog 1',content='First Post Content',user_id=user.id)
post_2 = Post(title='Blog 2',content='First Post Content',user_id=user.id)
db.session.add(post_1)
db.session.add(post_2)
db.session.commit()
user.posts
Out[25]:
[Post('Blog 1', '2019-01-25 06:52:30.079563'),
 Post('Blog 2', '2019-01-25 06:52:30.333877')]

In [26]: for post in user.posts:
    ...:     print(post.title)
Blog 1
Blog 2

post = Post.query.first()
In [28]: post
Out[28]: Post('Blog 1', '2019-01-25 06:52:30.079563')

In [29]: post.user_id
Out[29]: 1

In [30]: post.author
Out[30]: User('Corey', 'C@demo.com', 'default.jpg')

删除

In [31]: db.drop_all()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在上一个章节,我们已经创建了一个基础的Blog程序。现在我们将使用一些Dajngo高级功能,去实现一个完整的blo...
    金金刚狼阅读 3,628评论 1 12
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,102评论 0 8
  • 此段内容简要来自自强学堂的教程详情请查询自强学堂 一、 后台的运作流程 接收request请求 处理数据 获取请求...
    coder_ben阅读 5,260评论 6 56
  • 不知不觉到了中年,从什么时候开始,惊觉头上有了丝丝白发,一双儿女还没有长大,而自己已经百病缠身。曾经的雄心壮...
    那畔千浔阅读 428评论 0 1
  • 昨日看房抽空闲, 湿地公园去游玩。 招牌宏伟气势大, 游客稀疏经商难。 一群小孩玩套圈, 两只水鸟空盘旋。 潮白河...
    韩翔阅读 3,079评论 1 9