Python操作數據庫


我們在寫代碼的時候,經常會操作數據庫,增刪改查,數據庫有很多類型,關系型數據庫和非關系數據庫,這里咱們介紹一下python怎么操作mysql、redis和mongodb。

一、python操作mysql數據庫 python3中操作mysql數據需要安裝一個第三方模塊,pymysql,使用pip install pymysql安裝即可,在python2中是MySQLdb模塊,在python3中沒有MySQLdb模塊了,所以使用pymysql。

     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()#所有的數據一起返回

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

    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

 redis-py使用connection pool來管理對一個redis server的所有連接,避免每次建立、釋放連接的開銷。默認,每個Redis實例都會維護一個自己的連接池。可以直接建立一個連接池,然后作為參數Redis,這樣就可以實現多個Redis實例共享一個連接池。

    import redis  
      
    pool = redis.ConnectionPool(host='127.0.0.1', port=9212)  
    r = redis.Redis(connection_pool=pool)  
    r.set('one', 'first')  
    r.set('two', 'second')  
    print r.get('one')  
    print r.get('two')  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM