python與數據庫的例子
初始化數據庫
鏈接數據庫創建庫和表並插入數據
init.py
import pymysql
sql_base='create database school;'
sql_table='''create table student(sno varchar(20) primary key,
sname char(10),
sage int(10),
sex char(4),
sacademy char(10),
sgrade char(9),
sclass char(10))default charset=utf8;'''
DB=pymysql.connect(host='localhost',passwd='1234',charset='utf8',user='root')
cursor=DB.cursor()
cursor.execute(sql_base)
cursor.execute('use school')
cursor.execute(sql_table)
sql_insert='''insert into student values('2016081111','張三',20,'男','軟件工程學院','2016',3),
('2016061111','王傑',21,'男','網絡工程學院','2016',3),
('2016071113','周順',19,'男','大氣科學學院','2016',3),
('2017081180','李偉',20,'男','軟件工程學院','2017',2),
('2016081201','王麗',20,'女','軟件工程學院','2016',5);'''''
cursor.execute(sql_insert)
DB.commit()
實現各種功能
func.py
DB=None
import pymysql
class Method():
def __init__(self):
self.qurey_sql='select * from student'
def qurey_all(self):
cursor=DB.cursor()
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
cursor.execute(self.qurey_sql)
info=cursor.fetchall()
for i in info:
if i != info[0]:
print()
for j in i:
print(j,end=' ')
cursor.close()
def qurey_sno(self):
try:
cursor=DB.cursor()
sno = input('請輸入學號:')
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
sno_sql = 'select * from student where sno=%s'%(sno)
cursor.execute(sno_sql)
a=cursor.fetchall()[0]
for i in a:
print(i,end=' ')
except Exception as e:
print('有錯誤',e)
finally:
cursor.close()
def qurey_sname(self):
try:
cursor=DB.cursor()
sname = input('請輸入姓名:')
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
sno_sql = 'select * from student where sname="%s"'%(sname)
cursor.execute(sno_sql)
for i in cursor.fetchall()[0]:
print(i ,end=' ')
except Exception as e:
print('有錯誤',e)
finally:
cursor.close()
def qurey_academy(self):
try:
cursor=DB.cursor()
academy = input('請輸入學院:')
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
academy_sql = 'select * from student where sacademy="%s"' % (academy)
cursor.execute(academy_sql)
x=cursor.fetchall()
for i in x:
if i != x[0]:
print()
for j in i:
print(j,end=' ')
except Exception as e:
print('有錯誤',e)
finally:
cursor.close()
def add_info(self):
try:
cursor=DB.cursor()
info=list(input('請輸入添加的信息 學號 姓名 年齡 性別 學院 年級 班級:\n(每項空格隔開)').split(' '))
sql_insert='''insert into student values('%s','%s',%d,'%s','%s','%s','%s')'''\
%(info[0],info[1],int(info[2]),info[3],info[4],info[5],info[6])
cursor.execute(sql_insert)
DB.commit()
except Exception as e:
print('有錯誤',e)
finally:
cursor.close()
def modify_info(self):
try:
cursor=DB.cursor()
sname=input('請輸入修改學生的名字:')
sno_sql = 'select * from student where sname="%s"' % (sname)
cursor.execute(sno_sql)
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
for i in cursor.fetchall()[0]:
print(i, end=' ')
ch=input('\n請輸入要修改的字段 :')
if ch == '學號':
ch = 'sno'
if ch == '姓名':
ch = 'sname'
if ch == '年齡':
ch = 'sage'
if ch == '性別':
ch = 'sex'
if ch == '學院':
ch = 'sacademy'
if ch == '學年':
ch = 'sgrade'
if ch == '班級':
ch = 'sclass'
context=input('請輸入要修改的信息')
up_sql='update student set %s="%s" where sname="%s";'%(ch,context,sname)
cursor.execute(up_sql)
DB.commit()
if ch == 'sname':
sno_sql = 'select * from student where sname="%s"' % (context)
cursor.execute(sno_sql)
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
for i in cursor.fetchall()[0]:
print(i,end=' ')
else:
cursor.execute(sno_sql)
print('學號 \t 姓名 年齡 性別\t學院\t 學年 班級\t')
for i in cursor.fetchall()[0]:
print(i, end=' ')
except Exception as e:
print('錯誤',e)
finally:
cursor.close()
def delete(self):
try:
cursor=DB.cursor()
cursor.execute(self.qurey_sql)
for i in cursor.fetchall():
print(i)
del1=input('請輸入要刪除的學生姓名')
del_sql='delete from student where sname="%s"'%del1
#print(del_sql)
cursor.execute(del_sql)
DB.commit()
except Exception as e:
print('出錯',e)
finally:
cursor.close()
def main():
global DB
DB=pymysql.connect(host='localhost',user='root',password='1234',charset='utf8',database='school')
method=Method()
print('請選擇您的操作:\n1.查詢所有學生的信息\t2.按學號查詢學生的信息\t3.按姓名查詢學生的信息\n4.按學院查詢學生的信息\t5.添加學生信息'
'\t6.修改學生信息\n7.刪除學生信息\t8.退出',end='')
while True:
c=input('\n請輸入功能: (s=功能選項)')
if c == '1':
method.qurey_all()
if c == '2':
method.qurey_sno()
if c == '3':
method.qurey_sname()
if c == '4':
method.qurey_academy()
if c == '5':
method.add_info()
if c == '6':
method.modify_info()
if c == '7':
method.delete()
if c == '8':
DB.close()
print('感謝使用')
break
if c == 's':
print('請選擇您的操作:\n1.查詢所有學生的信息\t2.按學號查詢學生的信息\t3.按姓名查詢學生的信息\n'
'4.按學院查詢學生的信息\t5.添加學生信息'
'\t6.修改學生信息\n7.刪除學生信息\t8.退出', end='')
main()