增刪改查

from pymysql? import *

class JD(object):

def __init__(self):

# 創(chuàng)建Connection連接

? ? ? ? self.conn = connect(host='localhost', port=3306, user='root', password='wjh830724', database='jd', charset='utf8')

# 獲得Cursor對象

? ? ? ? self.cursor =self.conn.cursor()

def excute_sql(self,sql):

self.cursor.execute(sql)

for tempin self.cursor.fetchall():

print(temp)

def show_all_items(self):

"""查詢所有商品"""

? ? ? ? sql ='select * from goods;'

? ? ? ? self.excute_sql(sql)

def? __del__(self):

# 關(guān)閉Cursor對象

? ? ? ? self.cursor.close()

self.conn.close()

def show_cates(self):

"""所有的商品分類"""

? ? ? ? sql ='select name from goods_cates;'

? ? ? ? self.excute_sql(sql)

def show_brands(self):

"""所有商品品牌分類"""

? ? ? ? sql ='select name from goods_brands;'

? ? ? ? self.excute_sql(sql)

def add_cates(self):

"""添加商品分類"""

? ? ? ? item_name = input('請輸入新類商品名稱:')

sql ="""insert into goods_cates (name) values ("%s");""" %item_name

self.cursor.execute(sql)

self.conn.commit()

def delete_cates(self):

"""刪除商品分類"""

? ? ? ? item_name = input('請輸入新類商品名稱:')

sql ="""delete from goods_cates where name = '%s';""" %item_name

self.cursor.execute(sql)

self.conn.commit()

def update_cates(self):

"""修改商品分類"""

? ? ? ? item_name_old = input('請輸入更改前名字:')

item_name_new = input('請輸入更改后名字:')

sql ="""update goods_cates set name = '%s' where name = '%s';""" %(item_name_new,item_name_old)

self.cursor.execute(sql)

self.conn.commit()

def get_into_by_name(self):

fint_name = input('請輸入商品名字:')

# sql = """select * from goods where name="%s";""" %fint_name

# print("-->%s<--" % sql)

# self.cursor.execute(sql)

? ? ? ? sql ="select * from goods where name=%s"

? ? ? ? self.cursor.execute(sql,[fint_name])

print(self.cursor.fetchall())

def add_brands(self):

"""添加商品品牌分類"""

? ? ? ? item_name = input('請輸入新類商品名稱:')

sql ="""insert into goods_brands (name) values ("%s");""" %item_name

self.cursor.execute(sql)

self.conn.commit()

def delete_brands(self):

"""刪除商品品牌分類"""

? ? ? ? item_name = input('請輸入新類商品名稱:')

sql ="""delete from goods_brands where name = '%s';""" %item_name

self.cursor.execute(sql)

self.conn.commit()

def update_brands(self):

"""修改商品品牌分類"""

? ? ? ? item_name_old = input('請輸入更改前名字:')

item_name_new = input('請輸入更改后名字:')

sql ="""update goods_brands set name = '%s' where name = '%s';""" %(item_name_new,item_name_old)

self.cursor.execute(sql)

self.conn.commit()

@staticmethod

? ? def print_menu():

print('------京東------')

print('1.所有商品')

print('2.所有的商品分類')

print('3.所有商品品牌分類')

print('4.添加商品分類')

print('5.刪除商品分類')

print('6.修改商品分類')

print('7.根據(jù)名字查詢商品')

print('8.添加商品品牌')

print('9.刪除商品品牌')

print('10.修改商品品牌')

return input('請輸入功能應(yīng)用序號:')

def run(self):

while True:

num =self.print_menu()

if num =='1':

#所有商品

? ? ? ? ? ? ? ? self.show_all_items()

elif num =='2':

#所有的商品分類

? ? ? ? ? ? ? ? self.show_cates()

elif num =='3':

#所有商品品牌分類

? ? ? ? ? ? ? ? self.show_brands()

elif num =='4':

#添加商品分類

? ? ? ? ? ? ? ? self.add_cates()

elif num =='5':

#刪除商品分類

? ? ? ? ? ? ? ? self.delete_cates()

elif num =='6':

#修改商品分類

? ? ? ? ? ? ? ? self.update_cates()

elif num =='7':

#根據(jù)名字查詢商品

? ? ? ? ? ? ? ? self.get_into_by_name()

elif num =='8':

#添加商品品牌分類

? ? ? ? ? ? ? ? self.add_brands()

elif num =='9':

#刪除商品品牌分類

? ? ? ? ? ? ? ? self.delete_brands()

elif num =='10':

#修改商品品牌分類

? ? ? ? ? ? ? ? self.update_brands()

else:

print('輸入錯誤')

def main():

#創(chuàng)建對象

? ? jd = JD()

#用一個run方法跑來

? ? jd.run()

if? __name__ =='__main__':

main()

索引

索引是什么

索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分)较沪,它們包含著對數(shù)據(jù)表里所有記錄的引用指針路鹰。

更通俗的說盼铁,數(shù)據(jù)庫索引好比是字典前面的目錄诡蜓,能加快數(shù)據(jù)庫的查詢速度

索引目的

提高查詢效率

-- 開啟運行時間監(jiān)測:

set profiling=1;

-- 查看執(zhí)行的時間:

show profiles;

-- 查看索引

show indexfrom 表名;

-- 刪除索引:

drop index索引名稱 on 表名;

所以比較占磁盤鹦蠕,比建議建索引

如果數(shù)據(jù)很大蜀撑,并且經(jīng)常查矢炼,建立索引

賬戶管理

在生產(chǎn)環(huán)境下操作數(shù)據(jù)庫時析藕,絕對不可以使用root賬戶連接赫蛇,而是創(chuàng)建特定的賬戶绵患,授予這個賬戶特定的操作權(quán)限,然后連接進(jìn)行操作悟耘,主要的操作就是數(shù)據(jù)的crud

MySQL賬戶體系:根據(jù)賬戶所具有的權(quán)限的不同落蝙,MySQL的賬戶可以分為以下幾種

服務(wù)實例級賬號:啟動了一個mysqld,即為一個數(shù)據(jù)庫實例作煌;如果某用戶如root,擁有服務(wù)實例級分配的權(quán)限掘殴,那么該賬號就可以刪除所有的數(shù)據(jù)庫、連同這些庫中的表

數(shù)據(jù)庫級別賬號:對特定數(shù)據(jù)庫執(zhí)行增刪改查的所有操作

數(shù)據(jù)表級別賬號:對特定表執(zhí)行增刪改查等所有操作

字段級別的權(quán)限:對某些表的特定字段進(jìn)行操作

存儲程序級別的賬號:對存儲程序進(jìn)行增刪改查的操作

賬戶的操作主要包括創(chuàng)建賬戶粟誓、刪除賬戶奏寨、修改密碼、授權(quán)權(quán)限等

授予權(quán)限

需要使用實例級賬戶登錄后操作鹰服,以root為例

主要操作包括:

查看所有用戶

修改密碼

刪除用戶

查看所有用戶

所有用戶及權(quán)限信息存儲在mysql數(shù)據(jù)庫的user表中

查看user表的結(jié)構(gòu)

desc user;

主要字段說明:

Host表示允許訪問的主機(jī)

User表示用戶名

authentication_string表示密碼病瞳,為加密后的值

查看所有用戶

selecthost,user,authentication_stringfromuser;

建賬戶、授權(quán)

需要使用實例級賬戶登錄后操作悲酷,以root為例

常用權(quán)限主要包括:create套菜、alter、drop设易、insert逗柴、update、delete顿肺、select

如果分配所有權(quán)限戏溺,可以使用all privileges

grant權(quán)限列表on數(shù)據(jù)庫to'用戶名'@'訪問主機(jī)'identifiedby'密碼';

查看用戶有哪些權(quán)限

show grants for laoweng@localhost;

賬戶操作

修改權(quán)限

grant權(quán)限名稱on數(shù)據(jù)庫to賬戶@主機(jī)with grant option;

-- 刷新權(quán)限flush privileges;

修改密碼

使用root登錄渣蜗,修改mysql數(shù)據(jù)庫的user表

使用password()函數(shù)進(jìn)行密碼加密

update user set authentication_string=password('新密碼') where user='用戶名';

例:update user set authentication_string=password('123') where user='laoweng';

注意修改完成后需要刷新權(quán)限

刷新權(quán)限:flush privileges

遠(yuǎn)程登錄(危險慎用)

如果向在一個Ubuntu中使用msyql命令遠(yuǎn)程連接另外一臺mysql服務(wù)器的話,通過以下方式即可完成旷祸,但是此方法僅僅了解就好了耕拷,不要在實際生產(chǎn)環(huán)境中使用

修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

然后重啟msyql

sudo service mysql restart

刪除賬戶

1.使用root登錄? ?推薦使用

drop user'用戶名'@'主機(jī)';

2.使用root登錄,刪除mysql數(shù)據(jù)庫的user表中數(shù)據(jù)

delete from user where user='用戶名';

-- 操作結(jié)束之后需要刷新權(quán)限flush privileges

MySQL主從同步配置

1. 主從同步的定義

主從同步使得數(shù)據(jù)可以從一個數(shù)據(jù)庫服務(wù)器復(fù)制到其他服務(wù)器上托享,在復(fù)制數(shù)據(jù)時骚烧,一個服務(wù)器充當(dāng)主服務(wù)器(master),其余的服務(wù)器充當(dāng)從服務(wù)器(slave)闰围。因為復(fù)制是異步進(jìn)行的赃绊,所以從服務(wù)器不需要一直連接著主服務(wù)器,從服務(wù)器甚至可以通過撥號斷斷續(xù)續(xù)地連接主服務(wù)器辫诅。通過配置文件凭戴,可以指定復(fù)制所有的數(shù)據(jù)庫,某個數(shù)據(jù)庫炕矮,甚至是某個數(shù)據(jù)庫上的某個表。

使用主從同步的好處:

通過增加從服務(wù)器來提高數(shù)據(jù)庫的性能者冤,在主服務(wù)器上執(zhí)行寫入和更新肤视,在從服務(wù)器上向外提供讀功能,可以動態(tài)地調(diào)整從服務(wù)器的數(shù)量涉枫,從而調(diào)整整個數(shù)據(jù)庫的性能邢滑。

提高數(shù)據(jù)安全,因為數(shù)據(jù)已復(fù)制到從服務(wù)器愿汰,從服務(wù)器可以終止復(fù)制進(jìn)程困后,所以,可以在從服務(wù)器上備份而不破壞主服務(wù)器相應(yīng)數(shù)據(jù)

在主服務(wù)器上生成實時數(shù)據(jù)衬廷,而在從服務(wù)器上分析這些數(shù)據(jù)摇予,從而提高主服務(wù)器的性能

2. 主從同步的機(jī)制

Mysql服務(wù)器之間的主從同步是基于二進(jìn)制日志機(jī)制,主服務(wù)器使用二進(jìn)制日志來記錄數(shù)據(jù)庫的變動情況吗跋,從服務(wù)器通過讀取和執(zhí)行該日志文件來保持和主服務(wù)器的數(shù)據(jù)一致侧戴。

在使用二進(jìn)制日志時,主服務(wù)器的所有操作都會被記錄下來跌宛,然后從服務(wù)器會接收到該日志的一個副本酗宋。從服務(wù)器可以指定執(zhí)行該日志中的哪一類事件(譬如只插入數(shù)據(jù)或者只更新數(shù)據(jù)),默認(rèn)會執(zhí)行日志中的所有語句疆拘。

每一個從服務(wù)器會記錄關(guān)于二進(jìn)制日志的信息:文件名和已經(jīng)處理過的語句蜕猫,這樣意味著不同的從服務(wù)器可以分別執(zhí)行同一個二進(jìn)制日志的不同部分,并且從服務(wù)器可以隨時連接或者中斷和服務(wù)器的連接哎迄。

主服務(wù)器和每一個從服務(wù)器都必須配置一個唯一的ID號(在my.cnf文件的[mysqld]模塊下有一個server-id配置項)回右,另外隆圆,每一個從服務(wù)器還需要通過CHANGE MASTER TO語句來配置它要連接的主服務(wù)器的ip地址,日志文件名稱和該日志里面的位置(這些信息存儲在主服務(wù)器的數(shù)據(jù)庫里)

3. 配置主從同步的基本步驟

有很多種配置主從同步的方法楣黍,可以總結(jié)為如下的步驟:

在主服務(wù)器上匾灶,必須開啟二進(jìn)制日志機(jī)制和配置一個獨立的ID

在每一個從服務(wù)器上,配置一個唯一的ID租漂,創(chuàng)建一個用來專門復(fù)制主服務(wù)器數(shù)據(jù)的賬號

在開始復(fù)制進(jìn)程前阶女,在主服務(wù)器上記錄二進(jìn)制文件的位置信息

如果在開始復(fù)制之前,數(shù)據(jù)庫中已經(jīng)有數(shù)據(jù)哩治,就必須先創(chuàng)建一個數(shù)據(jù)快照(可以使用mysqldump導(dǎo)出數(shù)據(jù)庫秃踩,或者直接復(fù)制數(shù)據(jù)文件)

配置從服務(wù)器要連接的主服務(wù)器的IP地址和登陸授權(quán),二進(jìn)制日志文件名和位置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末业筏,一起剝皮案震驚了整個濱河市憔杨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒜胖,老刑警劉巖消别,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異台谢,居然都是意外死亡寻狂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門朋沮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛇券,“玉大人,你說我怎么就攤上這事樊拓【姥牵” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵筋夏,是天一觀的道長蒂胞。 經(jīng)常有香客問我,道長叁丧,這世上最難降的妖魔是什么啤誊? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮拥娄,結(jié)果婚禮上蚊锹,老公的妹妹穿的比我還像新娘。我一直安慰自己稚瘾,他們只是感情好牡昆,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般丢烘。 火紅的嫁衣襯著肌膚如雪柱宦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天播瞳,我揣著相機(jī)與錄音掸刊,去河邊找鬼。 笑死赢乓,一個胖子當(dāng)著我的面吹牛忧侧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牌芋,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼蚓炬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躺屁?” 一聲冷哼從身側(cè)響起肯夏,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎犀暑,沒想到半個月后驯击,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡耐亏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年余耽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苹熏。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖币喧,靈堂內(nèi)的尸體忽然破棺而出轨域,到底是詐尸還是另有隱情,我是刑警寧澤杀餐,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布干发,位于F島的核電站,受9級特大地震影響史翘,放射性物質(zhì)發(fā)生泄漏枉长。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一琼讽、第九天 我趴在偏房一處隱蔽的房頂上張望必峰。 院中可真熱鬧,春花似錦钻蹬、人聲如沸吼蚁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肝匆。三九已至粒蜈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旗国,已是汗流浹背枯怖。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留能曾,地道東北人度硝。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像借浊,于是被迫代替她去往敵國和親塘淑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

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