Flask中数据库基本操作
发布日期:2021-05-10 07:23:13 浏览次数:21 分类:精选文章

本文共 5269 字,大约阅读时间需要 17 分钟。

Flask-SQLAlchemy ������������

1. ������������

Flask-SQLAlchemy ��� Flask ������������������������������������������������������������������������ ORM��������������������������������������������������� ORM ������������ Python ��������������������������������� Query ��������������������� SQL���������������������������������������

2. ���������������������

������������������ SQLAlchemy ������������������������������������������������������������������������������������������������ Flask ��������������������� db.session ������������������������

  • ���������������������������������������������������������������
  • ��������������������� db.session.add() ������������������������������
  • ��������������������� db.session.commit() ���������������������������������������
���������������������
# ������������ Role ������������������������
ro1 = Role(name='admin')
db.session.add(ro1)
# ���������������������������������������
db.session.commit()
# ������������������ Role ������
ro2 = Role(name='user')
db.session.add(ro2)
db.session.commit()
���������������������������

������������������������������������������������������������������

# ������������ User ������
us1, us2, ..., us10 = [...] # ��������������������������������� name ��� email ���������
# ���������������������������
db.session.add_all([us1, us2, ..., us10])
db.session.commit()

3. ������������

SQLAlchemy ������������������������������������������ Query ������������������������������������������������������

  • ��������������������������� all() ���������������������������������������������

    users = User.query.all()  # ������������ User ������
  • ��������������������������� first() ���������������������������������������������

    user = User.query.first()  # ��������������� User ������������������������������ None
  • ��������������������� filter_by() ������������������������������������������������

    # ������������ "wang" ���������
    user_filter = User.query.filter_by(name="wang").all()
���������������
  • ������������������������������������ "g" ������������������������ endswith() ���������

    user_list = User.query.filter(User.name.endswith("g")).all()
  • ���������������������������������������������������������������������������

    # ������������ "wang" ������������������ email ��� "163.com" ������
    user_list = User.query.filter(
    User.name != "wang",
    User.email.endswith("163.com")
    ).all()
SQL ���������

��������������������� ` casinos() ��������� SQLAlchemy ��������������� SQL ���������

sql = User.query.with_only_queries([User.name == "wang"])._sqlalchemy_obj
print(sql) # ������������ "SELECT user.name, user.email FROM user;"

4. ������������������CRUD ������

������������

������������������������������������������������������������������������������������������������������

# ���������������������
user = User.query.first()
# ������������������ "dong"
user.name = "dong"
# ������������
db.session.commit()
������������

��������������������������������������������������������������������� delete() ���������������������

user = User.query.first()
db.session.delete(user)
db.session.commit()

5. ��������� ������

������������������������������������������������������������������������������������

# ��������������� registers
registrations = db.Table(
'registrations',
db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
db.Column('course_id', db.Integer, db.ForeignKey('courses.id'))
)
# ������ Course ������
class Course(db.Model):
__tablename__ = 'courses'
... # ���������������
courses = db.relationship('Student', backref='courses', lazy='dynamic')
# ������ Student ������
class Student(db.Model):
__tablename__ = 'students'
... # ���������������
classes = db.relationship('Course', secondary=registrations, backref='student', lazy='dynamic')

������������������ us.courses ������������������������������������������ course.student ���������������������������������������

6. ���������������������

SQLAlchemy ������������������������������������������������������������

  • all()������������������������������������
  • first()��������������������������������� None������������������������������
  • first_or_404()��������������������������������������� 404 ���������
  • get()������������������������������������������ None���
  • get_or_404()������������������������������������������ 404���
  • paginate()������������������������������ Paginate ���������
���������������������
# TreeMap ������������������������������������������ paginate() ������
page = User.query.paginate(per_page=10, page=1)
# ������������������
users = page.items

7. ���������������

  • ������������������ create_all() ���������������������������������

    db.create_all()
  • ������������������ drop_all() ������������������������

    db.drop_all()

8. ������������������������

������������������������ lazy='dynamic'������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ lazy='joined' ��� lazy='eager' ���

9. ������������

��������������������������������������� Flask-SQLAlchemy ��������������������������������������������� CRUD ������������������������������������������������������������������������������������������������������������������

上一篇:WTForms支持的HTML标准字段
下一篇:Flask连接Mysql安装及设置操作

发表评论

最新留言

不错!
[***.144.177.141]2025年04月12日 11时54分23秒