flask連線mysql資料庫操作
阿新 • • 發佈:2018-12-15
Y21
以簡單的年級表格模型為例,介紹資料庫的增刪改查,條件查詢等操作
程式碼,以下:
from app import db
# 定義資料模型, 設定表格中各個欄位的資料型別
class Grade(db.Model):
g_id = db.Column(db.Integer,primary_key=True,autoincrement=True)
g_name = db.Column(db.String(30),nullable=False, unique=True)
g_num = db.Column(db.Integer, nullable=True)
__tablename__ = 'grade'
def __init__(self, name, num):
self.g_name = name
self.g_num = num
# 生成表格
db.create_all()
# 資料新增
grade1 = Grade('py5',38)
grade2 = Grade('py6',28)
# session:是一塊臨時儲存區域, 用來暫存資料庫操作的資料, 最終通過commit統一提交給資料庫.
# db.session.add(grade1)
# db.session.add(grade2)
# db.session.commit()
# 資料查詢(查詢所有資料)
# result = Grade.query.all()
# for item in result:
# print(item.g_name, item.g_num, item.g_id)
# 按照主鍵值查詢
# result = Grade.query.get(1)
# print(result)
# 按條件查詢, filter()設定對應的過濾條件, 完成資料的過濾操作
# result = Grade.query.filter(Grade.g_num > 20).all()
# print(result)
# 資料庫分頁查詢, paginate(引數1, 引數2, 引數3), 引數1代表查詢的頁碼, 頁碼值從1開始; 引數2代表每一頁查詢的總資料條數; 引數3是布林型別,用來設定當查詢超出範圍時, 以何種方式返回結果, 預設為True, 以404錯誤資訊返回, 如果為False此時以空列表形式返回.
# result = Grade.query.paginate(2, 5, False)
# print(result.items)
# 獲取查詢結果的總數量
# count = Grade.query.count()
# 按條件查詢所有滿足的結果的個數
# count = Grade.query.filter(Grade.g_num > 30).count()
# print(count)
# 從查詢結果中提取指定數量的資料(利用列表'切片'提取需要的物件)
# result = Grade.query.filter(Grade.g_num > 30).all()[1:3]
# print(result)
# 多條件查詢語句 startswith:以指定字元開頭
# result = Grade.query.filter(Grade.g_name.startswith('py'),Grade.g_num > 30).all()
from sqlalchemy import *
"""
sqlalchemy模組內建的查詢條件
and_(): 並且
or_(): 或者
not_(): 非, 條件只能一個
"""
# result = Grade.query.filter(and_(Grade.g_name.startswith('py'),Grade.g_num > 30)).all()
# result = Grade.query.filter(not_(Grade.g_num > 30)).all()
# print(result)
# 資料庫的刪除 先查詢再刪除
# grades = Grade.query.filter(Grade.g_id > 9).all()
# for item in grades:
# db.session.delete(item)
# db.session.commit()
# 資料修改 查詢後修改
# grade_1 = Grade.query.filter(Grade.g_num > 30).first()
# grade_1.g_num = 25
# db.session.commit()
個人小結,定有不足,歡迎指點。 謝謝~