Flask系列教程(19)——SQLAlchemy介紹和基本使用

SQLAlchemy介紹和基本使用

數據庫是一個網站的基礎吱涉。Flask可以使用很多種數據庫。比如MySQL罗标,MongoDB,SQLite,PostgreSQL等丈挟。這里我們以MySQL為例進行講解。而在Flask中软瞎,如果想要操作數據庫逢唤,我們可以使用ORM來操作數據庫,使用ORM操作數據庫將變得非常簡單涤浇。

在講解Flask中的數據庫操作之前鳖藕,先確保你已經安裝了以下軟件:

  • mysql:如果是在windows上,到官網下載只锭。如果是ubuntu著恩,通過命令sudo apt-get install mysql-server libmysqlclient-dev -yq進行下載安裝。
  • MySQLdbMySQLdb是用Python來操作mysql的包蜻展,因此通過pip來安裝喉誊,命令如下:pip install mysql-python
  • pymysqlpymysql是用Python來操作mysql的包纵顾,因此通過pip來安裝伍茄,命令如下:pip3 install pymysql。如果您用的是Python 3施逾,請安裝pymysql敷矫。
  • SQLAlchemySQLAlchemy是一個數據庫的ORM框架例获,我們在后面會用到。安裝命令為:pip3 install SQLAlchemy曹仗。

通過SQLAlchemy連接數據庫:

首先來看一段代碼:

from sqlalchemy import create_engine

# 數據庫的配置變量
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'xt_flask'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)

# 創(chuàng)建數據庫引擎
engine = create_engine(DB_URI)

#創(chuàng)建連接
with engine.connect() as con:
    rs = con.execute('SELECT 1')
    print rs.fetchone()

首先從sqlalchemy中導入create_engine榨汤,用這個函數來創(chuàng)建引擎,然后用engine.connect()來連接數據庫整葡。其中一個比較重要的一點是件余,通過create_engine函數的時候,需要傳遞一個滿足某種格式的字符串遭居,對這個字符串的格式來進行解釋:

dialect+driver://username:password@host:port/database?charset=utf8

dialect是數據庫的實現(xiàn)啼器,比如MySQLPostgreSQL俱萍、SQLite端壳,并且轉換成小寫。driverPython對應的驅動枪蘑,如果不指定损谦,會選擇默認的驅動,比如MySQL的默認驅動是MySQLdb岳颇。username是連接數據庫的用戶名照捡,password是連接數據庫的密碼,host是連接數據庫的域名话侧,port是數據庫監(jiān)聽的端口號栗精,database是連接哪個數據庫的名字。

如果以上輸出了1瞻鹏,說明SQLAlchemy能成功連接到數據庫悲立。

用SQLAlchemy執(zhí)行原生SQL:

我們將上一個例子中的數據庫配置選項單獨放在一個constants.py的文件中,看以下例子:

from sqlalchemy import create_engine
from constants import DB_URI

#連接數據庫
engine = create_engine(DB_URI,echo=True)

# 使用with語句連接數據庫新博,如果發(fā)生異常會被捕獲
with engine.connect() as con:
    # 先刪除users表
    con.execute('drop table if exists authors')
    # 創(chuàng)建一個users表薪夕,有自增長的id和name
    con.execute('create table authors(id int primary key auto_increment,'name varchar(25))')
    # 插入兩條數據到表中
    con.execute('insert into persons(name) values("abc")')
    con.execute('insert into persons(name) values("xiaotuo")')
    # 執(zhí)行查詢操作
    results = con.execute('select * from persons')
    # 從查找的結果中遍歷
    for result in results:
        print(result)

如果想深入學習Flask,可以觀看這套免費Flask教學視頻:Flask入門到項目實戰(zhàn)

</article>

版權聲明: https://blog.csdn.net/huangyong1314/article/details/80392089

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末赫悄,一起剝皮案震驚了整個濱河市原献,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌埂淮,老刑警劉巖嚼贡,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異同诫,居然都是意外死亡粤策,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門误窖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叮盘,“玉大人秩贰,你說我怎么就攤上這事∪岷穑” “怎么了毒费?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愈魏。 經常有香客問我觅玻,道長,這世上最難降的妖魔是什么培漏? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任溪厘,我火速辦了婚禮,結果婚禮上牌柄,老公的妹妹穿的比我還像新娘畸悬。我一直安慰自己,他們只是感情好珊佣,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布蹋宦。 她就那樣靜靜地躺著,像睡著了一般咒锻。 火紅的嫁衣襯著肌膚如雪冷冗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天惑艇,我揣著相機與錄音蒿辙,去河邊找鬼。 笑死敦捧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的碰镜。 我是一名探鬼主播兢卵,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绪颖!你這毒婦竟也來了秽荤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柠横,失蹤者是張志新(化名)和其女友劉穎窃款,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體牍氛,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡晨继,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搬俊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紊扬。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜒茄,死狀恐怖,靈堂內的尸體忽然破棺而出餐屎,到底是詐尸還是另有隱情檀葛,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布腹缩,位于F島的核電站屿聋,受9級特大地震影響,放射性物質發(fā)生泄漏藏鹊。R本人自食惡果不足惜润讥,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伙判。 院中可真熱鬧象对,春花似錦、人聲如沸宴抚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菇曲。三九已至冠绢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間常潮,已是汗流浹背弟胀。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喊式,地道東北人孵户。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像岔留,于是被迫代替她去往敵國和親夏哭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容