在Python的Flask架構下使用sqlalchemy庫的簡單教程

來源:互聯網
上載者:User
flask中的sqlalchemy 相比於sqlalchemy封裝的更加徹底一些 , 在一些方法上更簡單

首先import類庫:

在CODE上查看代碼片派生到My Code片

  from flask import Flask   from flask.ext.sqlalchemy import SQLAlchemy


然後,需要載入 資料庫路徑

在CODE上查看代碼片派生到My Code片

  mysqlname='mysql://user:passwd@127.0.0.1/student?charset=utf8' 

在CODE上查看代碼片派生到My Code片

  app = Flask(__name__)   app.config['SQLALCHEMY_DATABASE_URI'] = mysqlname   db = SQLAlchemy(app) 


通過前面兩步 ,我們已經讓flask和資料庫聯絡到了一起

下面我們要把 flask和具體的表聯絡在一起、

這樣建立一個model模型

在CODE上查看代碼片派生到My Code片

  class User(db.Model):        """儲存 每種警示類型的數量 , 以 分鐘 為單位進行統計     :param source: string ,警示來源     :param network_logic_area: string ,該警示所屬的邏輯網路地區     :param start_time: datetime , 警示發生時間     """        __tablename__ = 'hello'     id = db.Column(db.Integer , primary_key = True)     source = db.Column(db.String(255) )     network_logic_area = db.Column(db.String(255) )     start_time = db.Column(db.DateTime)     count = db.Column(db.Integer)        def __init__(self , source , network_logic_area , start_time , count):       self.source = source       self.network_logic_area = network_logic_area       self.start_time = start_time       self.count = count        def alter(self):       self.count += 1; 

上面這個代碼,就讓falsk和具體的表hello聯絡在了一起

在這個類中 ,我們首先要指定表,然後把這個表中的列都列出來,最後定義一個 初始化函數 , 讓後面插入資料使用


現在開始具體的資料庫操作:

1、insert

在CODE上查看代碼片派生到My Code片

      p = User(........)       db.session.add(p)       db.session.commit() 

通過 類User構造了一條資料

2、find

用主鍵擷取資料:
Code example:

User.query.get(1)

通過一個精確參數進行反查:
Code example:

peter=User.query.filter_by(username='peter').first() #注意:精確查詢函數query.filter_by(),是通過傳遞參數進行查詢;其他增強型查詢函數是query.filter(),通過傳遞運算式進行查詢。print(peter.id) #如果資料不存在則返回None

模糊查詢:
Code example:

User.query.filter(User.email.endswith('@example.com')).all()[, ]

邏輯非1:
Code example:

peter=User.query.filter(User.username !='peter').first()print(peter.id)

邏輯非2:
Code example:

fromsqlalchemy importnot_peter=User.query.filter(not_(User.username=='peter')).first()print(peter.id)

邏輯與:
Code example:

fromsqlalchemy importand_peter=User.query.filter(and_(User.username=='peter', User.email.endswith('@example.com'))).first()print(peter.id)

邏輯或:
Code example:

fromsqlalchemy importor_peter=User.query.filter(or_(User.username !='peter', User.email.endswith('@example.com'))).first()print(peter.id)

filter_by:這個裡面只能放具體放入條件,不能放一個複雜的計算 ,

filter: 這個裡面可以放一些複雜的計算

.first:取第一條資料

.all:取出所有資料

還有一個其他的方法,可以進行排序、計數之類的操作

3、使用sql語句

可以通過 前面構造的 db 直接使用sql的原生語句

在CODE上查看代碼片派生到My Code片

  insert_table.db.engine.execute(' ..... ') 


4、delete

在CODE上查看代碼片派生到My Code片

  me = User(........) 

在CODE上查看代碼片派生到My Code片

  db.session.delete(me)   db.session.commit() 

5、更新資料

Code example: u=User.query.first()u.username='guest' #更新資料和變數賦值那麼簡單,但必須是通過查詢返回的對象。db.session.commit()
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.