使用python訪問資料庫
阿新 • • 發佈:2018-11-23
文章目錄
python中使用mysql的步驟
python中使用資料庫可以想象作一個去河對岸工作的小故事
- 建立橋樑(connection連結)
- 建立工人(curser遊標物件)
- 工作
- 若要獲得對岸的東西(查詢資料庫中資料),就要卸貨(輸出資料)
- 收回工人
- 拆除橋樑
訪問資料庫的程式
要想在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]