国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python大佬養成計劃----flask_sqlalchemy操作數據庫

RdouTyping / 573人閱讀

摘要:使用對象關系映射框架,它將低層的數據庫操作指令抽象成高層的面向對象操作。在中,數據庫使用指定。安裝對數據庫操作如何創建數據庫操作連接為了創建初始數據庫,調用方法來創建表和數據庫您的數據庫已經生成。最為常見的關系就是一對多的關系。

flask_sqlalchemy

使用對象關系映射(Object-Relational Mapper, ORM)框架,它將低層的數據庫操作指令抽象成高層的面向對象操作。也就是說,如果我們直接使用數據庫引擎,我們就要寫 SQL 操作語句,但是,如果我們使用了 ORM 框架,我們對諸如表、文檔此類的數據庫實體就可以簡化成對 Python 對象的操作

SQLAlchemy已經成為了python世界里面orm的標準,flask是一個輕巧的web框架,可以自由的使用orm,其中flask-sqlalchemy是專門為flask指定的插件。

在 Flask-SQLAlchemy 中,數據庫使用 URL 指定。

MySQL -->  mysql://username:password@hostname/database

安裝

 pip install flask-sqlalchemy
對數據庫操作 1. 如何創建數據庫操作連接
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:sheen@localhost/zaj_sql"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

為了創建初始數據庫,調用 SQLAlchemy.create_all() 方法來創建表和數據庫:

   db.create_all()

您的數據庫已經生成?,F在來創建一些用戶

admin = User("admin", "admin@example.com")
guest = User("guest", "guest@example.com")

但是它們還沒有真正地寫入到數據庫中,因此讓我們來確保它們已經寫入到數據庫中

db.session.add(admin)
db.session.add(guest)
db.session.commit()
2.創建關系型數據庫表

SQLAlchemy 連接到關系型數據庫,關系型數據最擅長的東西就是關系。因此,我們將創建一個使用兩張相互關聯的表的應用作為例子。
最為常見的關系就是一對多的關系。因為關系在它們建立之前就已經聲明,您可以使用 字符串來指代還沒有創建的類
關系使用 relationship() 函數表示。然而外鍵必須用類 sqlalchemy.schema.ForeignKey 來多帶帶聲明.

from datetime import datetime
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import pymysql
from sqlalchemy import desc

app = Flask(__name__)
db = SQLAlchemy(app)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:sheen@localhost/zaj_sql"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
bootstrap = Bootstrap(app)

class User(db.Model):
    id = db.Column(db.Integer,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    passwd = db.Column(db.String(100))
    add_time = db.Column(db.DATETIME,default=datetime.now())
    gender = db.Column(db.BOOLEAN,default=True)
    role_id = db.Column(db.INTEGER,db.ForeignKey("role.id"))

    def __repr__(self):
        return "" %(self.name)

class Role(db.Model):
    id = db.Column(db.INTEGER,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    users = db.relationship("User",backref="role")
    # 給Role模型添加users屬性
    # backref 是定義反向引用
        def __repr__(self):
        return "" % (self.name)
if __name__ =="__main__":
    # 1. 創建數據庫表
    # db.drop_all()
    # db.create_all()
    # # 2. 創建role數據庫表數據
    role_1 = Role(name="超級會員")
    role_2 = Role(name="普通會員")

    db.session.add(role_1)
    db.session.add(role_2)

    db.session.commit()

    # # # 3. 添加user表內數據,100個用戶,50個為超級會員,50個為普通會員
    for i in range(1,13):
        if i%2 == 0:
            u = User(name="sheen"+str(i),passwd="sheen",role_id=1)
            db.session.add(u)
        else:
            u = User(name="star"+str(i),passwd="star",role_id=2)
            db.session.add(u)
    db.session.commit()

backref 是定義反向引用,可以通過User.role訪問Role對象和屬性。


查詢所有數據

    print("角色",Role.query.all())
    print("用戶",User.query.all())

根據條件查詢數據

    # select * from tablename where xxx=xxxxx
    print(User.query.filter_by(role_id=1).all())
    print(Role.query.filter_by().all())
    print(User.query.filter_by(role_id=2).all())


對于找到的數據進行更新

 print("進行數據更新",end="
")
    u =User.query.filter_by(name="sheen2").first()
    print(u)
    u.passwd = "123"
    db.session.add(u)
    db.session.commit()


篩選數據方法2(filter),這種方法可以看見原生的sql語句

    print("數據篩選", end="
")
    user = User.query.filter(User.role_id==1)
    print(user)
    


對于查詢的信息進行顯示限制

    print("限制查詢數據的顯示", end="
")

    users = User.query.filter_by(role_id=1).limit(3).all()
    print(users)

對于查詢的信息進行排序輸出(默認情況由小到大進行排序), 如果想要由大到?。?desc(User.add_time)

    print("數據再處理", end="
")
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).all()
    print(users)

多個過濾函數

print("多個過濾函數", end="
")
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).limit(3).offset(1).all()
    print(users)
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).slice(1,4).all()
    print(users)


分頁,第一個參數表示顯示第幾頁數據,第二個參數表示每頁顯示多少條數據

    print("分頁顯示", end="
")

    users = User.query.paginate(1,5)
    print(users.items)
    users = User.query.paginate(2, 5)
    print(users.items)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44887.html

相關文章

  • python大佬養成計劃----基于flask_sqlalchemy的網頁顯示據庫信息

    摘要:網頁顯示數據庫信息使用我們剛學習的,在網頁中顯示數據庫表中的數據。在開始運行程序前,確保數據庫中執行過創建表和創建用戶的操作,詳見鏈接描述。 網頁顯示數據庫信息 使用我們剛學習的flask_sqlalchemy,在網頁中顯示數據庫表中的數據。在開始運行程序前,確保數據庫中執行過創建表和創建用戶的操作,詳見鏈接描述。 # 模板文件templates/list.html {% extend...

    cppowboy 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<