*****====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 遍歷字典中所有...