mysql 第五節 python資料庫程式設計

2022-09-12 10:57:18 字數 4381 閱讀 2230

*****====5.python資料庫程式設計***************=

1.回顧:

資料庫的產生:

-- 早期:純手工管理紙質資料

-- 中期:在磁碟上的檔案系統來儲存資料

-- 現代:專門的資料庫管理系統

資料庫功能:

-- 提供獲取和處理資料功能

-- 供組織和儲存資料的功能

-- 資訊系統的核心技術

資料庫分類:

-- 1.關係型資料庫:mysql,sqlite,oracle,db2

-- 2.nosql資料庫:mongodb,redis

-- 3.物件關係型資料庫:postgresql(了解)

2.pymysql模組:

安裝 pip install pymysql

3.使用資料庫步驟:

連線資料庫===>獲取游標===>執行sql語句

===>關閉游標===>關閉連線

1.建立連線:

import pymysql

conn = pymysql.connect(

host='localhost',

port=3306,

user='root',

passwd='tan',

db='test',

charset='utf8'

)2.獲取游標:

cur = conn.cursor()

3.游標物件執行的方法:

execute(sql)

fetchone()

fetchmany()

fetchall()

rowcount()

close()

4.關閉游標,關閉連線

cur.close() --關閉游標

conn.close() --關閉連線

4.事務:

-- 事務是訪問和更新資料庫的乙個程式執行單元

-- 特點:

-- 1.原子性:事務中包括的諸多操作要麼都做,要麼都不做

-- 2.一致性:事務必須使資料庫從一致性狀態變到另乙個一致性狀態

-- 3.隔離性:乙個事務的執行不能被其他事務干擾

-- 4.永續性:事務一但提交,它對資料庫中的改變就是永久性的

開發過程中怎樣使用事務:

-- 關閉自動commit:設定autocommit(false)

-- 正常結束事務:conn.commit()

-- 提交事務失敗的處理,回滾:conn.rollback()

5.例項01:

import pymysql # 引入模組

# 資料庫連線

db = pymysql.connect(host='localhost', port=3306, user='root', passwd='111111', database="test01", charset='utf8')

# 使用 cursor() 方法建立乙個游標物件 cursor

cursor = db.cursor()

# 使用 execute() 方法執行 sql 查詢

cursor.execute("show databases;")

# 使用 fetchone() 方法獲取所有條資料.

data = cursor.fetchall()

print(data)

# 關閉游標

cursor.close()

# 關閉資料庫連線

db.close()

6.實力02:

import pymysql # 引入pymysql模組

# 使用pymysq中的connect函式,建立連線,獲取連線物件

con = pymysql.connect(

host='localhost',

user='root',

passwd='111111',

database='test01',

charset='utf8'

)# 使用連線物件,獲取游標

cur = con.cursor()

# 將所有需要用到的sql語句放到乙個字典中

sql_string_dict =

# 建立輸出函式

def for_out(cur):

for row in cur:

print(row)

print()

try:

cur.execute(sql_string_dict["drop"])

print("建立表:")

print(sql_string_dict["create"])

cur.execute(sql_string_dict["create"])

print("插入資料:")

for sql in sql_string_dict["insert"]:

print(sql)

cur.execute(sql)

print("執行查詢操作:")

cur.execute(sql_string_dict["select"])

for_out(cur)

print("執行修改操作:")

cur.execute(sql_string_dict["update"])

cur.execute(sql_string_dict["select"])

for_out(cur)

print("執行刪除操作:")

cur.execute(sql_string_dict["delete"])

cur.execute(sql_string_dict["select"])

for_out(cur)

con.commit() # 提交資料

except exception as e:

print(e)

con.rollback() # 失敗後回滾

# 關閉游標

cur.close()

# 關閉資料庫連線

con.close()

7.python和mysql互動:

from pymysql import *

def main():

# 獲取要查詢的商品名稱

find_name = input("請輸入要查詢的商品型別名:")

# 建立鏈結物件

conn = connect(host='localhost',

port=3306,

user='root',

password='mysql',

database='jing_dong',

charset='utf8')

# 建立游標

cs = conn.cursor()

# 定義乙個變數,用來儲存要執行的sql語句

sql = """select * from goods_cates where name="%s";""" % find_name

print("*****==>%s<*****====" % sql)

cs.execute(sql)

for temp_info in cs.fetchall():

print(temp_info)

# 關閉游標

cs.close()

# 關閉鏈結

conn.close()

了解8.防止注入,引數化:

from pymysql import *

def main():

# 獲取要查詢的商品名稱

find_name = input("請輸入要查詢的商品型別名:")

# 建立鏈結物件

conn = connect(host='localhost',

port=3306,

user='root',

password='mysql',

database='jing_dong',

charset='utf8')

# 建立游標

cs = conn.cursor()

# 定義乙個變數,用來儲存要執行的sql語句

# select * from goods_cates where name="" or 1=1 or ""

# 這種形式會內部過濾注入,%s沒有雙引號

cs.execute("""select * from goods_cates where name=%s;""", [find_name])

for temp_info in cs.fetchall():

print(temp_info)

# 關閉游標

cs.close()

# 關閉鏈結

conn.close()

if __name__ == "__main__":

main()

9.擴充講一下n**icat。

函式第五節

coding utf 8 1.定義乙個func name 該函式效果如下。assert func lilei lilei assert func hanmeimei hanmeimei assert func hanmeimei hanmeimei def title name if isinsta...

第五節 字典

字典的表現形式為大括號 dict key必須可hash,必須唯一且必須為不可改變的資料型別 value可存放任意多個值,可修改,可不唯一 無序且查詢速度快 鍵 值 鍵值對 1 dic.keys 返回乙個包含字典所有key的列表 2 dic.values 返回乙個包含字典所有value的列表 3 di...

Python基礎第五節 迴圈

for 變數 in 可迭代物件 迴圈體語句 可迭代物件包括 序列 字串 元組 列表 字典 迭代器物件 iterator 生成器函式 generator 檔案物件。字典的遍歷 for x in d 或 for x in d.keys 遍歷字典中所有鍵 for x in d.values 遍歷字典中所有...