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

資訊專欄INFORMATION COLUMN

flask-sqlalchemy操作(基礎)

Cciradih / 1302人閱讀

摘要:以下內容介紹了的基礎查詢語句,下篇文章將介紹其高級查詢聚合自關聯連接子查詢等模型類用戶表地址信息關聯表商品信息訂單表增一對一構建對象添加對象提交事務一對多主表子表子表賦值對象添加提交多對多生成或獲取商品對象生成訂單對象訂單表與商品表關聯添加

以下內容介紹了Sqlalchemy的基礎查詢語句,下篇文章將介紹其高級查詢(聚合、自關聯、連接、子查詢等)
模型類
# 用戶表
class User(db.Model):
    __tablename__ = "user"
    uid = db.Column(db.String(32), primary_key=True, nullable=False)
    username = db.Column(db.String(20), nullable=True)
    password = db.Column(db.String(128), nullable=True)
    email = db.Column(db.String(30), nullable=True)
    addresses = db.relationship("Address", backref="user")


# 地址信息
class Address(db.Model):
    __tablename__ = "address"
    aid = db.Column(db.String(32), primary_key=True, nullable=False)
    name = db.Column(db.String(32), nullable=True)
    site = db.Column(db.String(100), nullable=True)
    phone = db.Column(db.Integer, nullable=True)
    uid = db.Column(db.String(32), db.ForeignKey("user.uid"))


# 關聯表
OrderItem = db.Table(
    "orderitem",
    db.Column("gid", db.String(32), nullable=True),
    db.Column("product_id", db.String(32), db.ForeignKey("product.pid")),
    db.Column("order_id", db.String(32), db.ForeignKey("order.oid"))
)


# 商品信息
class Product(db.Model):
    __tablename__ = "product"
    pid = db.Column(db.String(32), nullable=False, primary_key=True)
    pname = db.Column(db.String(50), nullable=True)
    market_price = db.Column(db.Float, nullable=True)
    shop_price = db.Column(db.Float, nullable=True)
    pimage = db.Column(db.String(200), nullable=True)
    pdate = db.Column(db.Date, nullable=True)
    is_hot = db.Column(db.Integer, nullable=True)
    pdesc = db.Column(db.String(255), nullable=True)
    pflag = db.Column(db.Integer, nullable=True)
    order = db.relationship("Order", secondary=OrderItem)


# 訂單表
class Order(db.Model):
    __tablename__ = "order"
    oid = db.Column(db.String(32), nullable=False, primary_key=True)
    count = db.Column(db.Integer, nullable=True)
    subtotal = db.Column(db.Float, nullable=True)
    ordertime = db.Column(db.DateTime, nullable=True)
    flag = db.Column(db.String(10), nullable=True)
一對一
order = models.Orders(oid=orderid, ordertime=datetime.now(), total=pcount, uid=pid) # 構建對象
models.db.session.add(order)  # 添加對象
models.db.session.commit()  # 提交事務
一對多
p = models.User(uid="122", username="hello", password="123456", email="1@qq.com")  # 主表
c1 = models.Address(aid="1111111111",site="xxxxxxxxxx")  # 子表
c2 = models.Address(aid="2222222222", site="yyyyyyyyyy")  # 子表
p.addresses = [c1, c2]  # 賦值對象
models.db.session.add(p)  # 添加
models.db.session.commit()  # 提交
多對多
p = models.Product(pid="1",pname="hello") # 生成或獲取商品對象
o = models.Order(oid="1", )   # 生成訂單對象
p.order = [o]  # 訂單表與商品表關聯
models.db.session.add(p)  # 添加
models.db.session.commit() # 提交
一對一
models.Product.query.get(pid)  # 根據主鍵返回一個對象,必須查詢主鍵
models.Product.query.all()  # 返回全部對象
models.Product.query.filter_by(pid=pid).first()  # 返回第一個對象,檢索任何值均可
models.Product.query.filter_by(cid="1").limit(4).all()  # 限制返回對象
一對多
# 根據用戶獲取地址
p = models.user.query.get(uid)  # 根據主鍵返回一個對象,必須查詢主鍵
p.addresses  # 一對多獲取對象
# 根據地址獲取用戶
u = models.Address.query.get(1)
print(u.user)
多對多
p = models.Product.query.get(1)  # 正向查詢
print(p.order)
o = models.Order.query.get(1)  # 逆向查詢
print(o.product)
一對一
good = models.Product.query.filter_by(pid=pid).first() # 獲取
good.pflag = 6  # 修改
models.db.session.commit() # 提交
一對多
u = models.User.query.get(1)
    for i in u.addresses:
        i.name = "Gage"
models.db.session.commit()
多對多
o = models.Order.query.get(1)
    for i in o.product:
        i.pname = "Gage"
models.db.session.commit()
一對一
add = models.Address.query.filter_by(aid=aid).first() # 獲取
models.db.session.delete(add) # 添加
models.db.session.commit() # 提交
一對多
# 根據用戶刪除地址
# cascade="all" 添加此屬性會級聯刪除
# 用戶一個用戶對應多個地址,因此需要循環遍歷,實際開發需使用filter_by 或 filter進行過濾特定刪除
u = models.User.query.get(1)
    for i in u.addresses:
        print(i.aid)
models.db.session.delete(i)
models.db.session.commit()
# 根據地址刪除用戶
a = models.Address.query.get(1)
models.db.session.delete(a.user)
models.db.session.commit()
多對多
# 實際開發也是如此,即只刪除依賴
# 根據商品刪除所依賴的訂單
p = models.Product.query.get(1)
o = models.Order.query.get(1)
p.order.remove(o)
models.db.session.commit()
# 根據訂單刪除所關聯的商品
p = models.Product.query.get(1)
o = models.Order.query.get(1)
o.product.remove(p)
models.db.session.commit()

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

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

相關文章

  • Flask Web Development —— 數據庫(上)

    摘要:數據庫關系數據庫將數據保存在表中來模擬應用程序中不同的實體。這些行之間的連接稱作關系,也是關系數據庫模型的基礎。就像這個示例中看到的那樣,關系數據庫存儲數據高效且避免重復。最好的例子就是,支持一組關系數據庫引擎,包括流行的和。 數據庫就是有組織的存儲應用程序數據,然后查詢檢索指定需要的那部分。大部分web應用程序都采用基于關系模型的數據庫,也稱作結構化查詢語言(SQL)數據庫。但是最近...

    skinner 評論0 收藏0
  • Flask擴展之flask-sqlalchemy(上)

    摘要:查詢記錄在調試或測試模式自動啟用。可以用于顯式禁用原生支持。當使用不合適的指定無編碼的數據庫默認值時,這對于一些數據庫適配器是必須的比如上某些版本的。這對是必要的,它默認移除閑置多于小時的連接。注意如果使用了,自動設定這個值為小時。 flask-sqlalchemy是flask的一個ORM擴展框架,這個擴展在sqlalchemy的進行的擴展,更方便的結合Flask.什么是ORM?其是O...

    KaltZK 評論0 收藏0
  • Flask Web Development —— 數據庫(上)

    摘要:數據庫關系數據庫將數據保存在表中來模擬應用程序中不同的實體。這些行之間的連接稱作關系,也是關系數據庫模型的基礎。就像這個示例中看到的那樣,關系數據庫存儲數據高效且避免重復。最好的例子就是,支持一組關系數據庫引擎,包括流行的和。 數據庫就是有組織的存儲應用程序數據,然后查詢檢索指定需要的那部分。大部分web應用程序都采用基于關系模型的數據庫,也稱作結構化查詢語言(SQL)數據庫。但是最近...

    rockswang 評論0 收藏0
  • Flask 插件系列 - Flask-SQLAlchemy

    摘要:程序中最常用的莫過于關系型數據庫了,也稱數據庫。對象是類的實例,表示程序使用的數據庫。本文由發表于個人博客,采用自由轉載保持署名非商用禁止演繹協議發布。非商業轉載請注明作者及出處。本文標題為插件系列本文鏈接為更多閱讀 簡介 Web 開發中,一個重要的組成部分便是數據庫了。Web 程序中最常用的莫過于關系型數據庫了,也稱 SQL 數據庫。另外,文檔數據庫(如 mongodb)、鍵值對數據...

    LoftySoul 評論0 收藏0

發表評論

0條評論

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