咱們在寫代碼的時候,常常會操做數據庫,增刪改查,數據庫有不少類型,關係型數據庫和非關係數據庫,這裏我們介紹一下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