flask筆記:flask與資料庫的互動

hellowoody發表於2019-02-16

官方推薦使用flask-sqlalchemy,但是這裡我個人並不推薦。因為一般後臺程式設計師其實更喜歡使用原生sql語言處理資料庫的問題,更重要的一個原因是在專案上線後,處理一些運維問題時,如果可以檢視sql語句可以更快找到問題。其次flask-sqlalchemy是在sqlalchemy基礎上封裝了一層,從編譯的角度看效率上肯定會低一些(效率的影響也許微乎其微)。

基於以上原因,我推薦使用sqlalchemy進行開發。

下面的兩種方式不僅限於flask,其實就是python對資料庫操作的具體實現。

第一種方式(針對查詢):

from sqlalchemy import create_engine,text
#定義資料庫屬性
hostname = `127.0.0.1`
port = `3306`
database = `dbname`
username = `root`
pwd = `pwd`
dburl = `mysql+mysqldb://{}:{}@{}:{}/{}`.format(username,pwd,hostname,port,database)
#建立資料庫連線物件
engine = create_engine(dburl,echo=True)
with engine.connect() as con:
  rs = con.execute(`SELECT 1`)  # con.execute(text("select 1 "))
  for row in rs:
    print row

第二種方式(針對增刪改,有事務):

from sqlalchemy import create_engine,text
from sqlalchemy.orm import sessionmaker
#定義資料庫屬性
hostname = `127.0.0.1`
port = `3306`
database = `dbname`
username = `root`
pwd = `pwd`
dburl = `mysql+mysqldb://{}:{}@{}:{}/{}`.format(username,pwd,hostname,port,database)
#建立資料庫連線物件
engine = create_engine(dburl,echo=True)
Session = sessionmaker(bind=engine)
session = Session()
session.execute("insert test values (`abc`,`123`)")
session.commit()
session.close()

相關文章