pymysql簡單使用

在 python 中 mysql 數(shù)據(jù)庫的簡單使用庶近,此處不介紹 mysql 數(shù)據(jù)庫的使用


1. 下載pymysql軟件包

命令行窗口運行pip install pymysql枢纠,即可安裝pymysql包,注:pip在下載python時已經(jīng)自帶筹裕。

下載pymysql軟件包

如果 在下載時發(fā)現(xiàn)是下載速度較慢可以更換pip的下載的地址 (此處的是清華大學的鏡像)

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

輸入完上面的代碼,設置鏡像地址后窄驹,再重新安裝即可使用鏡像下載朝卒。

擴展知識:pip config unset global.index-url 表示不設置下載源,即恢復默認下載地址.

更換下載源+下載pymysql軟件包

2. 使用pymysql工具

2.1 與數(shù)據(jù)庫建立連接

從pymysql中導入連接對象乐埠,并提供連接數(shù)據(jù)庫信息創(chuàng)建連接對象

# 導入pymysql
from pymysql import Connection

# 提供相關參數(shù)建立數(shù)據(jù)庫連接
conn = Connection(
    host="localhost",  # 地址
    port=3306,  # 端口號
    user="root",  # 用戶名
    password="123456",  # 密碼
    autocommit=True  # 自動提交
)

此處的autocommit=True # 自動提交 是設置為默認提交抗斤,當然你也可以選擇手動提交(默認值為False囚企,即不自動提交),只需要在希望更新數(shù)據(jù)庫時調用conn.commit()即可瑞眼。其底層就是mysql的事務transaction龙宏。

2.2 執(zhí)行sql語句

要執(zhí)行sql語句首先需要獲取到 cursor 游標對象(鼠標),通過 cursor 的 execute(str) 方法去執(zhí)行slq語句伤疙,具體方式如下:

# 獲取游標對象
cursor = conn.cursor()

# 執(zhí)行sql語句
cursor.execute("create database test")  # 創(chuàng)建數(shù)據(jù)庫test

上面執(zhí)行的語句是創(chuàng)建數(shù)據(jù)庫银酗,并沒有指定當前使用的數(shù)據(jù)庫。如果你要對某個數(shù)據(jù)庫內(nèi)進行操作時徒像,需要先指定當前連接的數(shù)據(jù)庫具體是哪個黍特。這里我們就選擇使用剛創(chuàng)建的test的數(shù)據(jù)庫了。

注意:如果創(chuàng)建的數(shù)據(jù)庫已經(jīng)存在锯蛀,即sql語句無法正常運行衅澈,代碼本身是會拋出異常中斷的。

如果已經(jīng)執(zhí)行了這段代碼谬墙,你可以選擇:

  1. 刪除數(shù)據(jù)庫 test
  2. cursor.execute("create database test")暫時注釋掉
  3. 在創(chuàng)建數(shù)據(jù)庫的前面添加條件刪除語句drop database if exists test

(包括下面create table 創(chuàng)建表 的語句也是如此今布,后面就不在提示了,這里我就用方法2拭抬,直接注釋掉了)

# 為連接指定數(shù)據(jù)庫
conn.select_db("test")  # 指定使用數(shù)據(jù)庫為test

# 創(chuàng)建表user
cursor.execute(
    """
    create table user
    (
        id       int primary key auto_increment comment '用戶身份標識',
        username varchar(20) comment '用戶名',
        password varchar(20) comment '密碼'
    ) comment '用戶表';
    """
)

2.3 基本 增刪改查 示例

基本的 增刪改 操作都是直接使用 cursor.execute() 執(zhí)行相應sql語句即可部默,對了,如果在創(chuàng)建連接的時候沒有設置autocommit=True自動提交的話造虎,在進行完以下操作后傅蹂,執(zhí)行conn.commit()提交更改,當然我設置了自動提交算凿,這里就把它注釋掉了份蝴。

# 增 
cursor.execute("insert into user (username, password) values ('zhangsan', '123')")  # 添加用戶1
cursor.execute("insert into user (username, password) values ('lisi', '1234');")  # 添加用戶2

# 刪
cursor.execute("delete from user where id = 1")  # 刪除id為1的用戶

# 改
cursor.execute("update user set password = '123456'")  # 設置所有用戶密碼為123456

# 提交修改
# conn.commit()

對于查詢操作有些許特殊,因為他是需要一個返回值的氓轰。但基本思路和上面基本一致婚夫,只是在執(zhí)行完查詢語句后需要使用cursor.fetchall()方法拿出結果。

# 查
cursor.execute("select * from user")  # 執(zhí)行sql:獲取所有用戶信息
# 獲取執(zhí)行結果的返回信息署鸡,類型為元組嵌套案糙,即tuple[tuple[Any, ...], ...]
result: tuple = cursor.fetchall()
# 打印查詢的結果
for m in result:
    print(m)

注意:如果執(zhí)行了多條sql查詢語句,cursor.fetchall() 只會拿回最近一次的返回數(shù)據(jù)靴庆,而前面的數(shù)據(jù)都會被覆蓋掉时捌。

2.4 關閉連接

這個按道理應該放在開頭,但是為了保證代碼的正確順序炉抒,而不至于太亂奢讨。所有我將其放在最后。就是關閉資源

# 關閉連接
cursor.close()
conn.close()

3 操作完整代碼

  • sql代碼實現(xiàn):
# 創(chuàng)建數(shù)據(jù)庫test
create database test;

# 使用數(shù)據(jù)庫test
use test;

# 創(chuàng)建表user
create table user
(
    id       int primary key auto_increment comment '用戶身份標識',
    username varchar(20) comment '用戶名',
    password varchar(20) comment '密碼'
) comment '用戶表';

# 增
insert into user (username, password) values ('zhangsan', '123');
insert into user (username, password) values ('lisi', '1234');

# 刪
delete from user where id = 1;

# 改
update user set password = '123456';

# 查1
select * from user;

  • python調用實現(xiàn):
# 導入pymysql
from pymysql import Connection

# 提供相關參數(shù)建立數(shù)據(jù)庫連接
conn = Connection(
    host="localhost",  # 地址
    port=3306,  # 端口號
    user="root",  # 用戶名
    password="123456",  # 密碼
    autocommit=True  # 自動提交
)

# 獲取游標對象
cursor = conn.cursor()

# # 執(zhí)行sql語句
# cursor.execute("create database test")  # 創(chuàng)建數(shù)據(jù)庫test

# 為連接指定數(shù)據(jù)庫
conn.select_db("test")  # 指定數(shù)據(jù)庫為test

# # 創(chuàng)建表user
# cursor.execute(
#     """
#     create table user
#     (
#         id       int primary key auto_increment comment '用戶身份標識',
#         username varchar(20) comment '用戶名',
#         password varchar(20) comment '密碼'
#     ) comment '用戶表';
#     """
# )

# 增
cursor.execute("insert into user (username, password) values ('zhangsan', '123')")  # 添加用戶1
cursor.execute("insert into user (username, password) values ('lisi', '1234');")  # 添加用戶2

# 刪
cursor.execute("delete from user where id = 1")  # 刪除id為1的用戶

# 改
cursor.execute("update user set password = '123456'")  # 設置所有用戶密碼為123456

# 提交修改
# conn.commit()

# 查
cursor.execute("select * from user")  # 獲取所有用戶信息
result: tuple = cursor.fetchall()  # 獲取執(zhí)行結果的返回值焰薄,類型為元組嵌套拿诸,即tuple[tuple[Any, ...], ...]
# 打印查詢的結果
for m in result:
    print(m)

# 關閉連接
cursor.close()
conn.close()

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末入录,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子佳镜,更是在濱河造成了極大的恐慌僚稿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟀伸,死亡現(xiàn)場離奇詭異蚀同,居然都是意外死亡,警方通過查閱死者的電腦和手機啊掏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門蠢络,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迟蜜,你說我怎么就攤上這事刹孔。” “怎么了娜睛?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵髓霞,是天一觀的道長。 經(jīng)常有香客問我畦戒,道長方库,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任障斋,我火速辦了婚禮纵潦,結果婚禮上,老公的妹妹穿的比我還像新娘垃环。我一直安慰自己邀层,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布遂庄。 她就那樣靜靜地躺著寥院,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涧团。 梳的紋絲不亂的頭發(fā)上只磷,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天经磅,我揣著相機與錄音泌绣,去河邊找鬼。 笑死预厌,一個胖子當著我的面吹牛阿迈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轧叽,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼苗沧,長吁一口氣:“原來是場噩夢啊……” “哼刊棕!你這毒婦竟也來了?” 一聲冷哼從身側響起待逞,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤甥角,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后识樱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗤无,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年怜庸,在試婚紗的時候發(fā)現(xiàn)自己被綠了当犯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡割疾,死狀恐怖嚎卫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宏榕,我是刑警寧澤拓诸,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站麻昼,受9級特大地震影響恰响,放射性物質發(fā)生泄漏。R本人自食惡果不足惜涌献,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一胚宦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燕垃,春花似錦枢劝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轴捎,卻和暖如春鹤盒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侦副。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工侦锯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秦驯。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓尺碰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亲桥,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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