列表&字典的拓展应用
1、使用普通的逻辑语句
menu = ''' 请输入您的操作: 1. 查询所有电影,请按1; 2. 添加一个电影,请按2; 3. 根据指定序号删除一个电影,请按3; 4. 根据电影名删除一个电影,请按4; 5. 退出系统,请按其它键。 ''' movies = [ {"name": "蚁人1:黄蜂女现身", "category": "科幻", "date": "2018"}, {"name": "蚁人2:黄蜂女现身", "category": "科幻", "date": "2018"}, {"name": "蚁人3:黄蜂女现身", "category": "科幻", "date": "2018"} ] while True: c=input(menu) if c=="1": print("序号\t\t\t电影名称\t\t\t类别\t\t\t年代") for i,movie in enumerate(movies): # print("{0}\t\t\t{1}\t\t\t{2}\t\t\t{3}".format(i + 1, movie['name'], movie['category'], movie['date'])) print("{0}\t{1}\t\t{2}\t\t\t{3}".format(i+1,movie['name'],movie['category'],movie['date'])) elif c=="2": name = input("请输入电影名称:") category=input("请输入电影类别:") date=input("请输入年代:") movie={'name':name,'category':category,'date':date} movies.append(movie) elif c=="3": print("序号\t\t\t电影名称\t\t\t类别\t\t\t年代") for i, movie in enumerate(movies): print("{0}\t{1}\t\t{2}\t\t\t{3}".format(i + 1, movie['name'], movie['category'], movie['date'])) number=int(input("请删除指定的序号:")) movies.pop(number-1) print("序号\t\t\t电影名称\t\t\t类别\t\t\t年代") for i,movie in enumerate(movies): # print("{0}\t\t\t{1}\t\t\t{2}\t\t\t{3}".format(i + 1, movie['name'], movie['category'], movie['date'])) print("{0}\t{1}\t\t{2}\t\t\t{3}".format(i+1,movie['name'],movie['category'],movie['date'])) elif c=="4": name=input("请输入要删除的电影名:") for movie in movies: # print(movie) if name in movie['name']: movies.remove(movie) print("序号\t\t\t电影名称\t\t\t类别\t\t\t年代") for i, movie in enumerate(movies): print("{0}\t{1}\t\t{2}\t\t\t{3}".format(i + 1, movie['name'], movie['category'], movie['date'])) #
2、使用函数
# 查询方法 def select(): #使用字典保存每条电影对象,将电影名称 电影类型和电影年代作为键,然后使用列表保存每个装载电影对象的字典 print("电影名称\t电影类型\t年代") #使用for循环遍历列表,得到每个字典对象,也就是每部电影信息(可以加上序号 for i,movie in enumerate(movies): #然后通过键获取字典中每个属性的值 print("{0}\t{1}\t{2}\t{3}".format(i+1,movie['name'],movie['category'],movie['date'])) # select() # 添加方法 def add(): global movies name=input("请添加电影名称:") category=input("请添加电影类型:") date=input("请添加年代:") movie={'name':name,'category':category,'date':date} movies.append(movie) select() # add() #删除方法(序号) def count_del(): select() numbers=int(input("请输入需要删除的序号:")) movies.pop(numbers-1) print("当前电影有:") select() # count_del() #删除电影(电影名) def del_movie(): select() name=input("请输入需要删除的电影名:") i=0 while i <= len(movies)-1: if name in movies[i]['name']: movies.remove(movies[i]) i=i+1 # for movie in movies: # if name in movie['name']: # movies.remove(movie) select() # del_movie() movies = [{'name': '蜘蛛侠', 'category': '科幻', 'date': '1990'}, {'name': '猎魔人', 'category': '科幻', 'date': '2000'}, {'name': '变形金刚', 'category': '科幻', 'date': '2010'} ] menu = ''' 请输入您的操作: 1. 查询所有电影,请按1; 2. 添加一个电影,请按2; 3. 根据指定序号删除一个电影,请按3; 4. 根据电影名删除一个电影,请按4; 5. 退出系统,请按其它键。 ''' while True: c=input(menu) if c=="1": select() elif c=="2": add() elif c=="3": count_del() elif c=="4": del_movie() else: break
3、使用类
电影名称 | 电影类型 | 电影年代 |
---|---|---|
蜘蛛侠 | 科幻 | 1990 |
猎魔人 | 科幻 | 2000 |
变形金刚 | 科幻 | 2010 |
# 这里采用ORM模型也就是(定义类): # 表---类 # 对象--数据行 # 属性--字段 # 对数据进行增删改查--函数 movies=[] class Movies: #创建movies表 def __init__(self,name,category,date): #定义行字段,也就是表头属性 self.name=name self.category=category self.date=date #设置方法 #1.查询方法 def select(self): for i,movie in enumerate(movies): print("序号\t\t\t电影名称\t\t\t电影类型\t\t\t年代") print("{0}\t\t\t{1}\t\t\t{2}\t\t\t{3}".format(i+1,movie['name'],movie['category'],movie['date'])) def add(self): movie={'name':self.name,'category':self.category,'date':self.date} movies.append(movie) def count_del(self,number): self.number=number movies.pop(number-1) def movie_del(self): i=1 while i<=len(movies)-1: if i in movies[i][self.name]: movies.remove(movies[i]) M=Movies M1=Movies('蜘蛛侠','科幻','1990') #定义字段 M1.add() #插入记录 M1.select() #查询记录 M.del_count() #通过序号删除记录 M.del_movie() #通过地域名称删除记录 M2=Movies('猎魔人','科幻','2000') M2.add() M3=Movies('变形金刚','科幻','2010') M3.add()
4、使用python将列表信息保存至mysql数据库
import pymysql #创建数据库连接、游标对象 class mysql_init(object): def __init__(self, conn): self.conn = None # connect to mysql def connect(self): self.conn = pymysql.connect( host="localhost", port=3306, user="root", passwd="root", db="test", charset="utf8" ) def cursor(self): try: return self.conn.cursor() except (AttributeError, pymysql.OperationalError): self.connect() return self.conn.cursor() def commit(self): return self.conn.commit() def close(self): return self.conn.close() def process(): dbconn.connect() #连接数据库对象 conn = dbconn.cursor() #创建游标对象 # DropTable(conn) #删除操作函数 # CreateTable(conn) #创建操作 InsertDatas(conn) #插入操作 # QueryData(conn) #查询操作 dbconn.commit() #提交并保存至数据库 dbconn.close() #关闭数据库连接 #插入方法 def InsertDatas(conn): conn=dbconn.cursor() # insert_sql = "insert into user_key values(%s)" insert_sql = "INSERT INTO movie VALUES(%s,%s,%s)" movies = [("大话西游","神话","1990-1-1")] conn.executemany(insert_sql, movies) #查询方法1 def query(sql, conn): '''查询sql''' # conn=dbconn.cursor() conn.execute(sql) rows = conn.fetchall() #查询表中的所有数据,相当于select * from table_name return rows #查询方法2 def QueryData(conn): sql = "select * from user_key" rows = query(sql, conn) printResult(rows) #删除方法1 def DropTable(conn): # conn=dbconn.cursor() conn.execute("DROP TABLE IF EXISTS `user_key`") #删除方法2 def DeleteData(conn): del_sql = "delete from user_key where id=2" conn.execute(del_sql) #创建方法 def CreateTable(conn): # conn=dbconn.cursor() sql_create = ''' CREATE TABLE `movie` (`name` varchar(50) NOT NULL, `category` varchar(50) NOT NULL, `date` date NOT NULL )''' conn.execute(sql_create) def printResult(rows): if rows is None: print("rows None") for row in rows: print(row) if __name__ == "__main__": dbconn = mysql_init(None) process() #调用相应的函数方法
5、使用Django理解列表&字典
Django使用流程见其他文章
1)连接数据库
#settings.py文件 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'demo', 'USER':'root', 'PASSWORD':'root' } }
2.定义Movies类(也就是列名、字典键)
from django.db import models class Movies(models.Model): name=models.CharField(max_length=64) category=models.CharField(max_length=64) date=models.CharField(max_length=64) class Meta: db_table="t_movies"
3)创建表
makemigrations detail migrate detail
4)创建函数方法(也就是进行增删改查操作)
from django.shortcuts import render from detail.models import Movies def add(request): if request.method=="GET": return render(request, 'addmovies.html') elif request.method=="POST": movies=Movies() movies.name=request.POST.get("name") movies.category=request.POST.get("category") movies.date=request.POST.get("date") movies.save() # return select(request) return redirect(to= reverse('movielist')) #重定向方式 def select(request): movies=Movies.objects.all() #字典 return render(request,'movielist.html',context={'movies':movies})
5)设置路由(调用函数至网页文件)
from django.contrib import admin from django.conf.urls import url from detail import views urlpatterns = [ url('admin/', admin.site.urls), url('addmovies/',views.add), url('movielist/',views.select,name='movielist') #重定向方式 #url('movielist/',views.select) ]
6)网页文件
添加记录的页面
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/html"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="http://127.0.0.1:8000/addmovies/" method="POST"> 请输入电影名称:<input type="text" name="name"><br> 请输入电影类型:<input type="text" name="category"><br> 请输入时间:<input type="text" name="date"><br> <input type="submit" value="提交"> </form> </body> </html>
查询记录的页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>movie list</title> </head> <body> <table border="1" cellspacing="0"> <tr> <th>name</th> <th>category</th> <th>date</th> </tr> {% for movie in movies %} <tr> <td>{{ movie.name }}</td> <td>{{ movie.category }}</td> <td>{{ movie.date }}</td> </tr> {% endfor %} </table> </body> </html>
7)查看效果
添加页面
提交后跳转到电影列表页面
查看数据库
来源:https://www.cnblogs.com/endmoon/p/9607042.html