官方推薦使用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()