Python通過pymysql調(diào)用MySQL進行增刪改移查
一、關系數(shù)據(jù)庫
1.數(shù)據(jù)模型
實體間的關系分為以下有三種:
1*)一對一模型
一對一(one-to-one)
關系模型用二維表格表示數(shù)據(jù)及數(shù)據(jù)聯(lián)系,是應用最為廣泛的數(shù)據(jù)模型。目前,各種常用的數(shù)據(jù)庫,如Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、Oracle、MySQL、SQLite等,都屬于關系模型數(shù)據(jù)庫管理系統(tǒng)。
2*)一對多模型
一對多(one-to-many)
層次模型采用樹狀結構表示數(shù)據(jù)之間的聯(lián)系,樹的節(jié)點稱為記錄,記錄之間只有簡單的層次關系。有且只有一個節(jié)點沒有父節(jié)點,該節(jié)點稱為根節(jié)點;其他節(jié)點有且只有一個父節(jié)點。
3*)多對多模型
多對多(many-to-many)
可以有任意多個節(jié)點沒有父節(jié)點。一個節(jié)點允許有多個父節(jié)點。兩個節(jié)點之間可以有兩種或兩種以上聯(lián)系。
2.面相對象模型
1*)對象模型概念
面向對象模型是在面向對象技術基礎上發(fā)展起來一種的數(shù)據(jù)模型,它采用面向對象的方法來設計數(shù)據(jù)庫。
2*)對象模型特點
面向對象模型的數(shù)據(jù)庫種存儲對象以對象為單位,每個對象包含對象的屬性和方法,具有類和繼承等特點。
二、了解關系數(shù)據(jù)庫的概念和特點
關系數(shù)據(jù)庫的概念和特點
基本概念
i*)關系
數(shù)據(jù)和數(shù)據(jù)之間的聯(lián)系稱為關系。
ii*)二維表
關系數(shù)據(jù)庫使用二維表來表示和存儲關系,一個關系就是一個二維表。表中的行稱為記錄,列稱為字段。一個數(shù)據(jù)庫可以包含多個表。
iii*)記錄與字段
表中的一行稱為一個記錄。表中的列為記錄中的數(shù)據(jù)項,稱為字段。字段也稱為屬性或者列。每個記錄可以包含多個字段,不同記錄包含相同的字段(字段的值不同)。例如,用戶表中的每個記錄包含用戶名、登錄密碼等字段。
關系數(shù)據(jù)庫不允許在一個表中出現(xiàn)重復的記錄。
VI*)關鍵字
可以唯一標識一個記錄的字段或字段組合稱為關鍵字。一個表可有多個關鍵字,其中用于標識記錄的關鍵字稱為主關鍵字,其他的關鍵字可稱為候選關鍵字。一個表只允許有一個主關鍵字。例如,用戶表中的用戶名可定義為主關鍵字,在添加記錄時,主關鍵字不允許重復。
VII*)外部關鍵字
如果一個表中的字段或字段組合作為其他表的主關鍵字,這樣的字段或字段組合稱為外部關鍵字。
基本特點
1.關系數(shù)據(jù)庫中的表是二維表,表中的字段必須是不可再分的,即不允許表中表。
2.在同一個表中不允許出現(xiàn)重復的記錄。
3.在同一個記錄中不允許出現(xiàn)重復的字段。
4.表中記錄先后順序不影響數(shù)據(jù)的性質(zhì),可以交換記錄順序。
5.記錄中字段的順序不影響數(shù)據(jù),可以交換字段的順序。
三、常用字段數(shù)據(jù)類型
數(shù)據(jù)表格

四、使Mysql和Pymysql鏈接成功
第一步、先在Navicat Premium 12中找到數(shù)據(jù)表登錄鏈接


注明:數(shù)據(jù)表一定要存在 不然數(shù)據(jù)修改追加不進去的?。。?!
第二步、 顯示鏈接成功后登入spyder 或者pycharm使用pymysql調(diào)用mysql
注明:博主使用的spyder

import pymysql
#定義數(shù)據(jù)庫鏈接參數(shù)
host = '127.0.0.1' #或者用local host
port = 3306
db = 'student'
user = 'root'
password = 'lyt2529165097'
conn = pymysql.connect(host=host, port=port, db=db, user=user, password=password)
def main():
cursor = conn.cursor(pymysql.cursors.SSCursor) #流式游標,默認返回元組
return cursor
通過在spyder里面輸入主機號 端口號 主機名 密碼等就可以登錄進去了
第三步、編寫代碼登錄系統(tǒng)
1.編寫系統(tǒng)登錄退出界面
while True:
print('請選擇以下菜單號:')
print('========='*3)
print('1、登錄學生信息管理系統(tǒng)')
print('2、退出學生信息管理系統(tǒng)')
print('========='*3)
mc1 = int(input('輸入菜單號:'))
if mc1 == 1:
login()
elif mc1 == 2:
print('感謝使用學生信息管理系統(tǒng)!')
break
當然了,進入系統(tǒng)怎么可能不需要密碼呢。一定要給自己設置密碼哦 不然別人半夜刪你代碼?。?!
2.編寫進入系統(tǒng)用戶名和密碼
def login():
administartor = input('請輸入用戶名:')
password = input('請輸入密碼:')
if administartor == '雷云騰' and password == 'lyt2529165097':

成功進入系統(tǒng)后,就可以編寫下一個程序了,比如我們把菜單系統(tǒng)都編寫出來,這樣就有了一個整體架構
3.編寫登錄后供選擇的菜單
登錄主菜單
#登入后的菜單----展開
def login():
administartor = input('請輸入用戶名:')
password = input('請輸入密碼:')
if administartor == '雷云騰' and password == 'lyt2529165097':
print("恭喜你成功登錄系統(tǒng)!!")
while True:
print('學生信息管理系統(tǒng)')
print('================')
print('1、增加學生記錄')
print('2、查詢學生記錄')
print('3、修改學生記錄')
print('4、刪除學生記錄')
print('5、顯示所有的學生記錄')
print('6、返回上級菜單')
print('=================')
mc2 = int(input('輸入菜單號:'))
if mc2 == 1:
add_student()
elif mc2 == 2:
query_student()
elif mc2 == 3:
update_student
elif mc2 == 4:
delete_student()
elif mc2==5:
print_student()
else:
break
else:
print('賬號或密碼錯誤!')
成功進入系統(tǒng)后并且擁有菜單系統(tǒng)的時候就可以編寫下一個程序了,比如我們先編寫插入記錄的程序
4.編寫增加學生記錄的程序
#插入學生記錄
def add_student():
cursor = main()
id = int(input('學號:'))
name = input('姓名:')
gender = input('性別:')
age = int(input('年齡:'))
class1 = input('班級:')
major = input('專業(yè):')
college = input('學院:')
add = cursor.execute('insert into stu (id, name, gender, age, class1, major, college)\
values(%s,%s,%s,%s,%s,%s,%s)',(id, name, gender, age, class1, major, college))
if add == 1:
conn.commit()
print('插入成功!')
else:
print('插入失敗!')

第四步、編寫查詢學生信息記錄的代碼
I*)按照學號查詢學生記錄
#按學號查詢
def Q_by_id():
cursor = main()
choice_id = int(input('請輸入學號:'))
cursor.execute('select * from stu where id =%s',(choice_id))
students = cursor.fetchall()
for stu in students:
print(stu[0], stu[1], stu[2], stu[3], stu[4], stu[5], stu[6])
print('查詢成功')
re = input('是否繼續(xù)查詢(yes/no):')
if re == 'yes':
Q_by_id()
else:
query_student()
II*)按照姓名查詢學生記錄
#按姓名查詢(以防學號輸入錯誤)
def Q_by_name():
cursor = main()
choose_name = input('請輸入姓名:')
cursor.execute('select * from stu where name =%s',(choose_name))
students = cursor.fetchall()
for stu in students:
print(stu[0], stu[1], stu[2], stu[3], stu[4], stu[5], stu[6])
print()
re = input('是否繼續(xù)查詢yes/no:')
if re == 'yes':
Q_by_name()
else:
query_student()
III*)查詢所有學生的信息記錄
#查詢所有學生
def Q_all():
cursor = main()
cursor.execute('select * from stu')
students = cursor.fetchall()
for student in students:
print('\t{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6]))


這樣就查詢成功啦!,如果還想要進行查詢的話,也是可以編寫代碼來實現(xiàn)的!
VI*)編寫"是否"進行查詢記錄
re = input('是否繼續(xù)查詢(yes/no):')
if re == 'yes':
Q_by_id()
else:
query_student()

當然 除了能查詢 當然還得有可供我們選擇的菜單啦!不然我們是無法進入程序經(jīng)行增刪改查的
VII*)寫出登錄菜單后還要寫出可供我們查詢的菜單
查詢記錄菜單
#查詢的菜單
def query_student():
while True:
print('查詢學生記錄')
print('================')
print('1、按學號查詢學生記錄')
print('2、按姓名查詢學生記錄')
print('3、查詢?nèi)繉W生記錄')
print('4、返回上級菜單')
print('=================')
mc3 = int(input('請輸入查詢的菜單號:'))
if mc3 == 1:
Q_by_id()
elif mc3 == 2:
Q_by_name()
elif mc3 == 3:
Q_all()
else:
break

注明:不光要寫出代碼 還要寫出可供選擇的菜單哦~
VII*)編寫刪除學生記錄程序
刪除記錄的菜單
#刪除的菜單
def delete1_student():
print('============================')
print('1、刪除學生所有信息')
print('2、回到初始界面')
print('============================')
mc4 = int(input('Input menu number:'))
if mc4 == 1:
delete_student()
elif mc4 == 3:
login()
刪除學生姓名為雷云騰的信息
首先要知道他的學號,然后還有姓名

接下來就是我們最難的環(huán)節(jié) 也是我們的重頭戲 修改指定的學生記錄
還是需要知道他的學號,姓名
def update_student():
cursor = main()
cur= int(input('請輸入想要修改學生的學號:'))
cursor.execute('select * from stu where id = %s', (cur))
if cursor.fetchall() == []:
print('未查找到學號是{}的學生'.format(cur))
mc3 = input('是否重新查詢?(yes/no)')
if mc3 != 'no':
update_student()
else:
login()
else:
print('==============')
print('1、修改姓名')
print('2、修改性別')
print('3、修改年齡')
print('4、修改班級')
print('5、修改專業(yè)')
print('6、修改學院')
print('7、返回上級菜單')
print('==============')
mc2 = int(input('請輸入菜單號:'))
if mc2 == 1:
name = input('請輸入修改后的名字:')
a = cursor.execute('update stu set name = %s where id = %s', (name, cur))
if a == 1:
conn.commit()
print('修改成功!')
else:
print('修改失??!')
elif mc2 == 2:
gender1 = input('請輸入修改后的性別:')
a = cursor.execute('update stu set genden = %s where id = %s', (gender1, cur))
if a > 1:
conn.commit()
print('修改成功!')
else:
print('修改失??!')
elif mc2 == 3:
age1 = int(input('請輸入修改后的年齡:'))
a = cursor.execute('update stu set age = %s where id = %s', (age1, cur))
if a > 1:
conn.commit()
print('修改成功!')
else:
print('修改失?。?)
elif mc2 == 4:
class1 = input('請輸入修改后的班級:')
a = cursor.execute('update stu set class = %s where id = %s', (class1, cur))
if a > 1:
conn.commit()
print('修改成功!')
else:
print('修改失敗!')
elif mc2 == 5:
major1 = input('請輸入修改后的專業(yè):')
a = cursor.execute('update stu set major = %s where id = %s', (major1, cur))
if a > 1:
conn.commit()
print('修改成功!')
else:
print('修改失敗!')
elif mc2 == 6:
college1 = input('請輸入修改后的學院:')
a = cursor.execute('update stu set college = %s where id = %s', (college1, cur))
if a > 1:
conn.commit()
print('修改成功!')
else:
print('修改失??!')
else:
pass#占一個空位符
當我還沒有關閉數(shù)據(jù)表時還未更新,這時候我們需要關閉所更新的數(shù)據(jù)表并且重新打開

這時候我們關閉數(shù)據(jù)表他就會對我們所更改的數(shù)據(jù)進行更新


當然除了更改姓名還可以更改學號 性別學院等等…
五、 All源碼(注明)
這個就不告訴大家了 給大家講了那么多知識,相信多看看多實訓一定都能打出來甚至做的更好的。
六、博客總結
1.為什么會寫代碼
現(xiàn)在代碼不僅會增加自己學識和思維 隨著學識的增加 也會影響到其他事物中去,當然,在博客中經(jīng)常會遇到一些生活、學習上的看似棘手的問題,那時我總是在舉步維艱時強迫自己認為能找到出路。久而久之,自己也產(chǎn)生了這樣一種思維模式,認為事情總是可以找到答案的。每次寫出一個博客和文章得到同行和老師的稱贊我都會興奮不已 為我下一次更好的博客內(nèi)容做鋪墊。
2.特定思維
在這個過程中,我又感覺到寫代碼也與之前解決問題的模式相似,每一次完成一個完整的東西,都形成了一種特定思維模式的一小部分,也許這就是寫代碼的樂趣。
3.思維靈感
當我每次困惑一個問題很久很久不能解決的時候 我會感到很壓抑,這時候我會試著出去呼吸一下新鮮空氣 伸個懶腰 把思緒放空。你就會發(fā)現(xiàn)身上頓時輕松了很多?;貋碓俳鉀Q這個困惑的時候發(fā)現(xiàn)特別容易。有時候靈感就是你壓抑很久突然放松之后來的,那一瞬間。
4.腦+手
培養(yǎng)自己編程思維,培養(yǎng)自己編程樂趣。代碼不是憑空想象出來的,是一行一行的敲出來的,運行成功沒有捷徑 只有靠自己的腦+手。
以上就是Python通過pymysql調(diào)用MySQL進行增刪改移查的詳細內(nèi)容,更多關于Python pymysql增刪改移查的資料請關注腳本之家其它相關文章!
相關文章
Python實現(xiàn)將不規(guī)范的英文名字首字母大寫
這篇文章給大家主要介紹的是利用map()函數(shù),把用戶輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?,其他小寫的?guī)范名字。文中給出了三種解決方法,大家可以根據(jù)需要選擇使用,感興趣的朋友們下面來一起學習學習吧。2016-11-11
python通過函數(shù)屬性實現(xiàn)全局變量的方法
這篇文章主要介紹了python通過函數(shù)屬性實現(xiàn)全局變量的方法,實例分析了Python中函數(shù)屬性的相關使用技巧,需要的朋友可以參考下2015-05-05
pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集
這篇文章主要介紹了pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

