pymysql

pymsql是利用Python鏈接mysql數據庫的庫python

Python3上有很好的支持, 同時在Python2中也可使用mysql

1 鏈接數據庫

conn = pymysql.connect(host='127.0.0.1', user='root', password='root', database='practise')

  使用connect()函數能夠建立一個鏈接對象sql

  須要傳入的參數包括數據庫

    host: 數據庫的IP地址安全

    user: 登陸數據庫的用戶名函數

    password: 登陸數據庫的密碼fetch

    database: 使用數據庫名大數據

    charset: 設置字符集spa

2 建立遊標

  有了數據庫的連接對象以後, 就能夠對數據庫執行必定的操做了對象

  使用代碼來連接數據庫通常都須要一箇中介, 來具體執行SQL語句, 通常是cursor(遊標)

  建立遊標對象

cursor = conn.cursor()

  在cursor()函數中能夠傳入參數來設置, 查詢的結果顯示的結構, 默認爲null, 顯示的結構爲:

  

    整個是一個元組, 查詢獲得的一個記錄也是一個元組對象

  通常地, 傳入參數

cursor = conn.cursor(pymysql.cursors.DictCursor)

  獲得的顯示結果爲:

  

    整個是一個列表, 一個記錄是一個字典, 鍵是列名

3 執行SQL語句

  建立好遊標對象以後, 就可使用遊標對象來執行一些SQL語句

  首先是生成SQL語句, 通常地, 爲了數據庫安全, 通常不要本身拼接SQL語句

  正確的拼接SQL的方式是將傳入的參數放到遊標執行SQL語句的函數中

sql = "select * from userinfo where username=%s and password=%s"
cursor.execute(sql,user,pwd)

  注意:

    在原有SQL語句中使用%s作佔位符

    使用execute()函數來執行SQL語句

    能夠將傳入的參數封裝成列表, 元組, 字典(此時須要在佔位符上加上標記如: %(user)s 來做爲鍵)

    若是須要執行多行SQL語句可使用executemany()

sql = "insert into userinfo(username,password) values(%s,%s)"
cursor.executemany(sql, [('egon', '12'), ('wusir', '123')])

    執行SQL語句以後能夠有返回值, 這個返回值是一個整數值, 表示受影響的函數, 若是是查詢語句, 獲得的就是結果的行數

    執行修改數據庫的操做, 須要提交事務來生效

conn.commit()

4 得到執行結果

  能夠經過fetchone(), fetchmany(), fecchall()來獲得執行的結果

result = cursor.fetchone()

  其中, fetchone獲得的是一條數據, fetchmany能夠傳入一個數值, 表示取的多少行, fechall表示取得查詢全部結果

  通常的, 不使用fetchmany, 要想使用少數部分的值, 應該在SQL中作必定的查詢限制(limit), 這樣可以保證內存不被查詢獲得的大數據撐爆

  在取數據的時候, 相似文件的光標性質, 獲得一行光標移動到下一行, 若是先執行fetchall, 那個在fertch獲得的結果就是空了

  能夠設置光標的移動

cursor.scroll(1,mode='relative')  # 相對當前位置移動
cursor.scroll(2,mode='absolute') # 相對絕對位置移動

5 獲得最後行ID

  有的時候, 咱們插入數據的時候是不設置該數據的ID的, 可是咱們還須要得到對該ID當作數據插入到另外一個表的時候

  若有文章表和文章媒體表

  這是就須要或的最後插入的數據的時候的ID 

cursor.execute(sql)
print(cursor.lastrowid)

6 關閉

  先關閉遊標, 在關閉連接  

cursor.close()
conn.close()
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息