MySQL

簡介
  • MySQL 是開源的开财,分商業(yè)版和社區(qū)版揪阿。
  • 關系型數(shù)據(jù)庫的一種,還有 SQLServer,SQLite,PostgreSQL,MariaDB,ORACLE...
  • Linux作為操作系統(tǒng)躯泰,ApacheNginx作為 Web 服務器厨剪,MySQL 作為數(shù)據(jù)庫,PHP/Perl/Python作為服務器端腳本解釋器难裆,這就是“LAMP“或“LNMP”組合子檀。
安裝
windows:

下載軟件包,下一步乃戈。褂痰。。完成症虑。

安裝可視化工具 MF (MySQL-Front)
linux:
  • apt-get install mysql-server mysql-client
    提示設置"root"密碼...
    完成
    命令行輸入: mysql -uroot -p
    然后輸入:剛才設置的密碼
    就可以用SQL語句操作數(shù)據(jù)庫了缩歪。
    比如 : show databases
  • 修改配置文件:
    cd /etc/mysql/
    cd mysql.conf.d/
    vi mysqld.cnf
    ...
    service mysql restart
使用
  • "--空格":代表注釋。
  • ";": 分號代表一條語句的結(jié)束谍憔。
  • 數(shù)據(jù)庫名匪蝙, 表名主籍,字段名,都有 反引號 ``.







示例:通過MySQL-Front寫的SQL語句
通過 MySQLdb 操作數(shù)據(jù)庫

MySQLdb是一款較為底層的逛球,python連接mysql用的模塊千元。和更加高級的,提供ORM的模塊不同颤绕,MySQLdb主要還是聚焦于如何和數(shù)據(jù)庫進行連接和進行基本的操作幸海,操作的體現(xiàn)形式主要還是進行SQL語句的執(zhí)行

這里還可以選擇其他的驅(qū)動比如: cymysql
安裝:pipenv install cymysql
使用:
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+cymysql://root:123456@localhost/test"

  • 建立連接
  • 游標對象執(zhí)行SQL語句物独,游標對象返回數(shù)據(jù)。
    fetchone() , fetchall()返回的都是元組氯葬。
  • 關閉連接

db.close()

  • 例子:
查詢數(shù)據(jù)庫


封裝 fetchone() fetchall() 返回的結(jié)果
直接返回的是不帶 表字段 的元組挡篓,可讀性差。

增刪改查
都是通過cursor.execute(sql [,args])
然后再 con.commit() 提交.
con.rollback() 回滾 cursor 的所有操作帚称。

通過 SQLAlchemy 操作數(shù)據(jù)庫

http://docs.sqlalchemy.org/en/latest/orm/tutorial.html

安裝
  • pipenv install SQLAlchemy
    檢測是否安裝成功
數(shù)據(jù)類型

Integer Float Boolean ForeignKey Date/DateTime String...

建表

注意:

  • 數(shù)據(jù)庫 test 要提前建好瞻凤。
  • 設置編碼 utf8
    engine = create_engine('mysql://root:123456@localhost/test?charset=utf8')
添加數(shù)據(jù),并提交到數(shù)據(jù)庫世杀。
from sqlalchemy.orm import sessionmaker

.add_all ( [a, b] )

刪除數(shù)據(jù)
修改數(shù)據(jù)

可以多次 .add()

查找數(shù)據(jù)
  • session.query(News).get(3)
    get(),表示用主鍵查詢
    從News表中,查詢 id 是“3” 的數(shù)據(jù)
  • session.query(News).filter_by(author="Lee")
    從News表中肝集,查詢 字段 是 "Lee" 的數(shù)據(jù)
  • session.query(News).filter(News.author != "Lee")
    從News表中瞻坝,查詢 表名.字段 不是 "Lee" 的數(shù)據(jù)
  • session.query(News.author.in_(["Lee", "Taylor"])
    查詢 作者 Lee ,Taylor 的數(shù)據(jù)
  • session.query(~News.author.in_(["Lee", "Taylor"])
    查詢 作者 不是 Lee 杏瞻, Taylor 的數(shù)據(jù)
  • 邏輯 與 或
    from sqlalchemy import and_, or_
    session.query(News).filter(and_(條件1所刀,條件2...))
    session.query(News).filter(or_(條件1,條件2...))
模糊匹配 like
  • session.query(News).filter(News.author.like('%張三%')
    查詢 作者名捞挥,包含 "張三" 的數(shù)據(jù).
    % 代表 0個或多個任意字符浮创。
  • query().filter(News.author.like('_a_lor')
    _ 代表 一個任意字符。
  • .first() 和 .all()
  • .one() 只查找一條數(shù)據(jù)
    該方法在找到多條數(shù)據(jù)砌函,或者 找不到數(shù)據(jù)斩披,都會報錯.
  • .one_or_none() 找不到數(shù)據(jù)時,返回None讹俊,找到多條也報錯垦沉。
注意:query() 可以傳 表 或 表字段
排序
  • .order_by(News.id.desc())
    desc()降序
    asc()升序
限制數(shù)量 和 計數(shù) 和 偏移
  • .limit()
    數(shù)量可以大于 實際返回的結(jié)果數(shù),不報錯仍劈。
  • .count()
  • .offset()
    偏移從0開始算.

通過 session.execute() 執(zhí)行原生sql語句

r = session.execute("SELECT title, author, content FROM news where author='湯姆' ")
for i in r:
    print(i.title, i.content)
通過 Flask-SQLAlchemy 操作數(shù)據(jù)庫

http://www.pythondoc.com/flask-sqlalchemy/index.html

  • 安裝
    pipenv install flask-sqlalchemy
  • 連接數(shù)據(jù)庫厕倍,建表,添加數(shù)據(jù)贩疙。


  • 提示:
    這里可以直接 from sqlalchemy import Column 和 數(shù)據(jù)類型讹弯。
    避免寫成 db.Column 或 db.Integer...
  • 增刪改查
    格式 "表名.query.filter() / filter_by() / get()..."
    同上面的 通過 SQLAlchemy 操作數(shù)據(jù)庫
  • get_or_404()
    first_or_404()
    在查找不到結(jié)果時况既,返回一個404錯誤,代替原來的get()和first()返回的None组民。注意棒仍,這里拋出了錯誤,后續(xù)代碼不執(zhí)行邪乍。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末降狠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子庇楞,更是在濱河造成了極大的恐慌榜配,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吕晌,死亡現(xiàn)場離奇詭異蛋褥,居然都是意外死亡,警方通過查閱死者的電腦和手機睛驳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門烙心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乏沸,你說我怎么就攤上這事淫茵。” “怎么了蹬跃?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵匙瘪,是天一觀的道長。 經(jīng)常有香客問我蝶缀,道長丹喻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任翁都,我火速辦了婚禮碍论,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柄慰。我一直安慰自己鳍悠,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布坐搔。 她就那樣靜靜地躺著贼涩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪薯蝎。 梳的紋絲不亂的頭發(fā)上遥倦,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音,去河邊找鬼袒哥。 笑死缩筛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的堡称。 我是一名探鬼主播瞎抛,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼却紧!你這毒婦竟也來了桐臊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤晓殊,失蹤者是張志新(化名)和其女友劉穎断凶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巫俺,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡认烁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了介汹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片却嗡。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嘹承,靈堂內(nèi)的尸體忽然破棺而出窗价,到底是詐尸還是另有隱情,我是刑警寧澤叹卷,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布撼港,位于F島的核電站,受9級特大地震影響豪娜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哟楷,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一瘤载、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卖擅,春花似錦鸣奔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至断楷,卻和暖如春锨匆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冬筒。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工恐锣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茅主,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓土榴,卻偏偏與公主長得像诀姚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玷禽,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容