日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Python中的MySQL数据库编程

發(fā)布時間:2024/4/11 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中的MySQL数据库编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.剛開始我們先給一張圖片,是介紹Python操作MySQl詳細步驟。

2.在Python語言中要想操作數(shù)據(jù)庫,就需要使用的pymysql這個模塊。

from pymysql import connect

3.獲取connection連接對象

要和MySQL數(shù)據(jù)庫連接,需要調(diào)用pymysql模塊中的connect()方法,其中也包括一些參數(shù)解釋。

conn=connect(參數(shù)列表)
  • 參數(shù)host:連接的mysql主機,如果本機是’localhost’
  • 參數(shù)port:連接的mysql主機的端口,默認是3306
  • 參數(shù)database:數(shù)據(jù)庫的名稱
  • 參數(shù)user:連接的用戶名
  • 參數(shù)password:連接的密碼
  • 參數(shù)charset:通信采用的編碼方式,推薦使用utf8

4. 常用的方法有以下:

  • 關(guān)閉數(shù)據(jù)庫連接 conn.close()
  • 提交數(shù)據(jù) conn.commit()
  • 撤銷回滾數(shù)據(jù) conn.rollback()
  • 獲取游標 cur = conn.cursor()

5.Cursor游標對象

5.1獲取Cursor對象

調(diào)用Connection對象的cursor()方法

cur =conn.cursor()

目的: 執(zhí)行sql語句(使用頻度最高的語句為select、insert、update、delete)

5.2 使用游標執(zhí)行SQL語句

execute(operation [, parameters ])

執(zhí)行SQL語句,返回受影響的行數(shù),主要用于執(zhí)行insert、update、delete語句,也可以執(zhí)行create、alter、drop等語句

5.3 關(guān)閉游標

cur.close()

5.4 獲取結(jié)果集中的一條

cur.fetchone()

返回一個元組

5.5 獲取結(jié)果集中的所有

cur.fetchall()

執(zhí)行查詢時,獲取結(jié)果集的所有行,一行構(gòu)成一個元組,再將這些元組裝入一個元組返回

6.pymysql完成數(shù)據(jù)查詢

import pymysqlconn = pymysql.connect(host='localhost', port=3306, user='root',password='mysql',database='python_test_1', charset='utf8') # 獲取游標 cursor = conn.cursor()# 執(zhí)行SQL語句 返回值就是SQL語句在執(zhí)行過程中影響的行數(shù) sql = "select * from hero;"row_count = cursor.execute(sql) print("SQL語句執(zhí)行影響的行數(shù)%d" % row_count)# 取出結(jié)果集中一行 返回的結(jié)果是一行 print(cursor.fetchone())# 取出結(jié)果集中的所有數(shù)據(jù)  返回一行數(shù)據(jù) for line in cursor.fetchall():print(line) # 關(guān)閉游標 cursor.close() # 關(guān)閉連接 conn.close()

7.pymysql完成對數(shù)據(jù)庫的增刪改

import pymysqlconn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='mysql',db='python_test_1', charset='utf8') # 通過連接獲取游標 cursor = conn.cursor() # sql = "delete from hero where id = 5;" # sql = insert into hero (name) values ('黎明'); sql = "update hero set kongfuid=444 where id = 4;"row_count = cursor.execute(sql) print("SQL語句執(zhí)行影響的行數(shù)%d" % row_count) # 提交數(shù)據(jù)到數(shù)據(jù)庫 conn.commit()# 回滾數(shù)據(jù)到什么都不做的狀態(tài) 即撤銷剛剛的修改 # conn.rollback()# 關(guān)閉游標和連接 cursor.close() conn.close()

8.參數(shù)化列表防止SQL注入

SQL注入 產(chǎn)生原因: 后臺將用戶提交的帶有惡意的數(shù)據(jù)和SQL進行字符串方式的拼接,從而影響了SQL語句的語義,最終產(chǎn)生數(shù)據(jù)泄露的現(xiàn)象。
如果防止: sql語句的參數(shù)化, 將SQL語句的所有數(shù)據(jù)參數(shù)存在一個列表中傳遞給execute函數(shù)的第二個參數(shù)

from pymysql import connectdef main():find_name = input("請輸入物品名稱:")# 創(chuàng)建Connection連接conn = connect(host='localhost',port=3306,user='root',password='mysql',database='goods',charset='utf8')# 獲得Cursor對象cs1 = conn.cursor()# 非安全的方式# 輸入 " or 1=1 or " (雙引號也要輸入)# sql = 'select * from goods where name="%s"' % find_name# print("""sql===>%s<====""" % sql)# # 執(zhí)行select語句,并返回受影響的行數(shù):查詢所有數(shù)據(jù)# count = cs1.execute(sql)# 安全的方式# 構(gòu)造參數(shù)列表params = [find_name]# 執(zhí)行select語句,并返回受影響的行數(shù):查詢所有數(shù)據(jù)count = cs1.execute('select * from goods where name=%s', params)# 注意:# 如果要是有多個參數(shù),需要進行參數(shù)化# 那么params = [數(shù)值1, 數(shù)值2....],此時sql語句中有多個%s即可# 打印受影響的行數(shù)print(count)# 獲取查詢的結(jié)果# result = cs1.fetchone()result = cs1.fetchall()# 打印查詢的結(jié)果print(result)# 關(guān)閉Cursor對象cs1.close()# 關(guān)閉Connection對象conn.close()if __name__ == '__main__':main()

總結(jié)

以上是生活随笔為你收集整理的Python中的MySQL数据库编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。