征途猎魔mysql数据库_字典&列表的拓展理解

这篇博客介绍了如何使用Python的字典和列表模拟数据库操作,包括查询、添加、删除电影信息。通过示例代码展示了如何使用普通逻辑语句、函数以及ORM模型来处理数据。此外,还提到了使用Django框架进行数据库操作的基本流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表&字典的拓展应用

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() #调用相应的函数方法

c2621e6da5bfbab082b571aa896ac866.png

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)网页文件

添加记录的页面

Title

请输入电影名称:

请输入电影类型:

请输入时间:

查询记录的页面

movie list
namecategorydate

{% for movie in movies %}

{{ movie.name }}{{ movie.category }}{{ movie.date }}

{% endfor %}

7)查看效果

添加页面

fe1eac56a0bb011d5672f697b215f50c.png

提交后跳转到电影列表页面

a28ae24e7738dfff5791f8abb97f8a0f.png

查看数据库

6bb47c9de49131bea25e5bc599fd75fb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值