1. 程式人生 > >使用python訪問資料庫

使用python訪問資料庫

文章目錄

python中使用mysql的步驟

python中使用資料庫可以想象作一個去河對岸工作的小故事

  1. 建立橋樑(connection連結)
  2. 建立工人(curser遊標物件)
  3. 工作
  4. 若要獲得對岸的東西(查詢資料庫中資料),就要卸貨(輸出資料)
  5. 收回工人
  6. 拆除橋樑

訪問資料庫的程式

要想在python中訪問資料庫,需要匯入pymysql模組
要想建立橋樑(connection連結)物件,需要connect類呼叫以下引數

conn=connect(引數列表)

* 引數host:連線的mysql主機,如果本機是'localhost'
* 引數port:連線的mysql主機的埠,預設是3306
* 引數database:資料庫的名稱
* 引數user:連線的使用者名稱
* 引數password:連線的密碼
* 引數charset:通訊採用的編碼方式,推薦使用utf8

利用python查詢資料庫

假設我們要訪問(python庫,students表)中的資料

import pymysql
# 建立connection橋樑物件
conn = connect(	host = 'localhost',
				port = 3306,
				database = 'python'
				user = 'root'
				password = '123456'
				charset = 'utf8')
# 建立curser工人物件
curser = conn.curser()
# 編寫sql語句
sql = 'select * from students;'
# 工人工作
curser.execute(sql)
# 返回資料,也可以用fatchone,每用一次返回一行。
for i in curser.fatchall(): print(i) # 回收工人 curser.close() # 回收橋樑 conn.close()

利用python對資料庫進行增刪改

import pymysql
# 建立連結
conn = connect(	host = 'localhost',
				port = 3306,
				database = 'python'
				user = 'root'
				password = '123456'
				charset = 'utf8')
# 建立遊標物件
curser = conn.curser()
# 編寫sql語句
sql1 = "delete from students where id = 5;"
sql2 = insert into students(name) values ('小明');
sql3 = 'update students set cls_id=2 where id = 4;'
# 執行sql語句
curser.execute(sql1)
curser.execute(sql2)
curser.execute(sql3)
# 確認儲存
conn.commit()
# 若要反悔,則可回滾到原來狀態
# conn.rollback()
# 關閉遊標
curser.close()
# 關閉連結
conn.close()

引數化列表,防sql注入

sql注入

再python中編寫查詢sql程式的時候,會需要用到定義一個變數接收要查詢的內容,然後,再把變數傳入sql語句中。如:

name = '小明'
sql = "select * from students where name = '%s' " % name

這樣的話,就很容易造成sql注入而洩露資料。如,在輸入name時輸入' or 1 or '
這樣的話,sql語句就變成了select * from students where name = '' or 1 or ''
解析這句話,條件是:

  • where name = ’ ’ 或者 where 1 或者 where ’ ’
    其中,where 1 即表示 True,所以將會輸出所有資訊。

防sql注入

把name放到一個列表中,再傳入sql語句即可。

name = '小明'
sql = "select * from students where name = '%s' % [name]