python學習筆記(九):操做數據庫

咱們在寫代碼的時候,常常會操做數據庫,增刪改查,數據庫有不少類型,關係型數據庫和非關係數據庫,這裏我們介紹一下python怎麼操做mysql、redis和mongodb。python

1、python操做mysql數據庫 python3中操做mysql數據須要安裝一個第三方模塊,pymysql,使用pip install pymysql安裝便可,在python2中是MySQLdb模塊,在python3中沒有MySQLdb模塊了,因此使用pymysql。mysql

    import pymysql
    # 建立鏈接,指定數據庫的ip地址,帳號、密碼、端口號、要操做的數據庫、字符集
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='data',charset='utf8')
    # 建立遊標
    cursor = conn.cursor()
    # 執行SQL,並返回收影響行數
    effect_row = cursor.execute("update students set name = 'niuhy' where id = 1;")
    # 執行SQL,並返回受影響行數
    #effect_row = cursor.execute("update students set name = 'niuhy' where id = %s;", (1,))
    # 執行SQL,並返回受影響行數
    effect_row = cursor.executemany("insert into students (name,age) values (%s,%s); ", [("andashu",18),("12345",20)])
    #執行select語句
    cursor.execute("select * from students;")
    #獲取查詢結果的第一條數據,返回的是一個元組
    row_1 = cursor.fetchone()
    # 獲取前n行數據
    row_2 = cursor.fetchmany(3)
    # 獲取全部數據
    row_3 = cursor.fetchall()
    # 提交,否則沒法保存新建或者修改的數據
    conn.commit()
    # 獲取最新自增ID
    new_id = cursor.lastrowid    
    print(new_id)
    # 關閉遊標
    cursor.close()
    # 關閉鏈接
    conn.close()
    上面的操做,獲取到的返回結果都是元組,若是想獲取到的結果是一個字典類型的話,可使用下面這樣的操做
 
    import pymysql
    # 建立鏈接,指定數據庫的ip地址,帳號、密碼、端口號、要操做的數據庫、字符集
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='data',charset='utf8')
    # 建立遊標
    cursor = conn.cursor()
    
    cursor = coon.cursor(cursor=pymysql.cursors.DictCursor)#須要指定遊標的類型,字典類型
    # 執行SQL
    cursor.execute("select * from user;")
    #獲取返回結果,這個時候返回結果是一個字典
    res = cursor.fetchone()#返回一條數據,若是結果是多條的話
    print(res)
    res2 = cursor.fetchall()#全部的數據一塊兒返回

2、操做redis redis是一個nosql類型的數據庫,數據都存在內存中,有很快的讀寫速度,python操做redis使用redis模塊,pip安裝便可redis

    import redis
    r = redis.Redis(host='127.0.0.1',port=6379,db=0)#指定鏈接redis的端口和ip以及哪一個數據庫
    r.set('name', 'value')#set string類型的值
    r.setnx('name2', 'value')#設置的name的值,若是name不存在的時候纔會設置
    r.setex('name3', 'value', 3)#設置的name的值,和超時時間,過了時間key就會自動失效
    r.mset(k1='v1',k2='v2')#批量設置值
    r.get('name')#獲取值
    print(r.mget('k1','k2'))#批量獲取key
    
    r.delete('name')#刪除值
    r.delete('k1','k2')#批量刪除
    #======下面是操做哈希類型的
    r.hset('hname', 'key', 'value')#set 哈希類型的值
    r.hset('hname', 'key1', 'value2')#set 哈希類型的值
    r.hsetnx('hname','key2','value23')#給name爲hname設置key和value,和上面的不一樣的是key不存在的時候
    #纔會set
    r.hmset('hname',{'k1':'v1','k2':'v2'})#批量設置哈希類型的key和value
    r.hget('name', 'key')#獲取哈希類型的值
    print(r.hgetall('hname'))#獲取這個name裏全部的key和value
    r.hdel('hname','key')#刪除哈希類型的name裏面指定的值
    print(r.keys())#獲取全部的key
相關文章
相關標籤/搜索