一,python連線資料庫並執行查詢語句
"""連線資料庫並查詢資料
"""#
1,匯入pymysql包
import
pymysql
if__name__ == '
__main__':
#2,建立連線物件
#connect = connection = connect本質上乙個函式,使用這三個都可以建立資料庫連線物件
#1,host:伺服器的主機位址
#2,port:mysql資料庫的埠號
#3,user:使用者名稱
#4,password:密碼
#5,database:操作的資料庫
#6,charset:運算元據庫使用的編碼格式
conn = pymysql.connect(host = "
localhost",
port = 3306,
user = "
root",
password = "
2018713",
database = "
test1",
charset = "
utf8")
#3,獲取游標,目的是通過游標執行sql語句
cursor =conn.cursor()
#4,準備sql語句
sql = "
select * from student;"#
5,執行sql語句
cursor.execute(sql)
#6,獲取查詢的結果,返回的是乙個元組
rows =cursor.fetchall()
for row in
rows:
(row)
#print(row)
#7,關閉游標
cursor.close()
#8,關閉資料庫連線
conn.close()
二,連線資料庫並執行增加/修改/刪除語句
"""連線資料庫並執行增加刪除修改語句
"""#
1,匯入pymysql包
import
pymysql
if__name__ == '
__main__':
#2,建立連線物件
#connect = connection = connect本質上乙個函式,使用這三個都可以建立資料庫連線物件
#1,host:伺服器的主機位址
#2,port:mysql資料庫的埠號
#3,user:使用者名稱
#4,password:密碼
#5,database:操作的資料庫
#6,charset:運算元據庫使用的編碼格式
conn = pymysql.connect(host = "
localhost",
port = 3306,
user = "
root",
password = "
2018713",
database = "
test1",
charset = "
utf8")
#3,獲取游標,目的是通過游標執行sql語句
cursor =conn.cursor()
#對資料庫進行增刪改操作,執行sql語句後需要把修改的資料提交到資料庫
#4,準備sql語句--新增資料
sql = "
insert into class(name) values('python42'); "#
sql = "update class set name = 'python45' where id = 1;" #修改語句
#sql = "delete from class where id = 3;" # 刪除語句
try:
#5,執行sql語句
cursor.execute(sql)
#提交修改的資料到資料庫
conn.commit()
except
exception as e:
#對修改的資料進行撤銷,回滾到修改前的狀態
conn.rollback()
finally
:
#print(row)
#7,關閉游標
cursor.close()
#8,關閉資料庫連線
conn.close()
三,防止aql注入
(1)sql注入:使用者提交帶有惡意的資料與sql語句進行字串方式的拼接,從而影響sql語句的語義,最終產生資料洩露的現象
如:示例:sql = 「select * from student where name = 『%s』;」 % 「黃蓉』or 1 = 1 or 『 『』
(2)防止sql注入的方法---sql語句引數化;sql語句中的引數使用%s佔位(此處不是python字串的格式化操作);
(3)具體實現:將sql語句中%s佔位所需要的引數存在乙個列表中,把引數列表傳遞給excute方法中的第二個引數
(4)示例**:
"""防止sql注入
"""#
1,匯入pymysql包
import
pymysql
if__name__ == '
__main__':
#2,建立連線物件
#connect = connection = connect本質上乙個函式,使用這三個都可以建立資料庫連線物件
#1,host:伺服器的主機位址
#2,port:mysql資料庫的埠號
#3,user:使用者名稱
#4,password:密碼
#5,database:操作的資料庫
#6,charset:運算元據庫使用的編碼格式
conn = pymysql.connect(host="
localhost",
port=3306,
user="
root",
password="
2018713",
database="
test1",
charset="
utf8")
#3,獲取游標,目的是通過游標執行sql語句
cursor =conn.cursor()
#對資料庫進行增刪改操作,執行sql語句後需要把修改的資料提交到資料庫
#4,準備sql語句--查詢語句 ---導致sql注入
#sql = "select * from class where name = '%s';" % "python41' or 1 = 1 or '"
#準備sql語句,防止sql注入的語句,%s是sql語句的引數,不加引號
sql = "
select * from class where name = %s;"#
5,執行sql語句
cursor.execute(sql,("
python41
",))
row =cursor.fetchall()
(row)
#7,關閉游標
cursor.close()
#8,關閉資料庫連線
conn.close()
四,防止sql注入--插入多個引數資料
"""防止sql注入,插入多個引數資料
"""#
1,匯入pymysql包
import
pymysql
if__name__ == '
__main__':
#2,建立連線物件
#connect = connection = connect本質上乙個函式,使用這三個都可以建立資料庫連線物件
#1,host:伺服器的主機位址
#2,port:mysql資料庫的埠號
#3,user:使用者名稱
#4,password:密碼
#5,database:操作的資料庫
#6,charset:運算元據庫使用的編碼格式
conn = pymysql.connect(host = "
localhost",
port = 3306,
user = "
root",
password = "
2018713",
database = "
test1",
charset = "
utf8")
#3,獲取游標,目的是通過游標執行sql語句
cursor =conn.cursor()
#對資料庫進行增刪改操作,執行sql語句後需要把修改的資料提交到資料庫
#4,準備sql語句--插入多個引數資料
sql = "
insert into class(name,age,gender,c_id) values(%s,%s,%s,%s)
"try
:
#5,執行sql語句,執行sql語句的傳入的引數,引數型別可以是元組,列表,字典
cursor.execute(sql,["
曹操",77,'
男',3]);
#提交修改的資料到資料庫
conn.commit()
except
exception as e:
#對修改的資料進行撤銷,回滾到修改前的狀態
conn.rollback()
finally
:
#print(row)
#7,關閉游標
cursor.close()
#8,關閉資料庫連線
conn.close()
連線資料庫操作
有一段時間沒有寫部落格了,今天我來說說資料庫的連線操作。首先我都知道ado.net這門技術,其實我自己之前也學過幾次,但只學了一點皮毛,跟著老師走也看得懂,但是自己就不會敲出來,前段時間我又在學習這個,也覺得自己這次應該是真的學懂了吧!我們就以mssqlserver為例來講解資料庫連線操作,首先我們...
python 連線資料庫
原文 原文1 安裝mysql python pip install mysql python dome1 def db mange db bank conn none try 開啟資料庫連線 conn mysqldb.connect localhost root 123456 db bank 獲取操...
Python連線資料庫
usr bin env python coding utf 8 import sys reload sys sys.setdefaultencoding utf 8 import pymysql import pymysql.cursors usr bin env python coding utf...