1.概述
使用peewee增加数据方法就是获取模型赋成对象,调用对象的sava方法保存即可。
存储数据有两种方式,第一种调用对象挨个赋值,第二种是用模型全部赋值
赋值外键字段有两种方式,一种直接赋主表主键,另一种赋给主表的对象
2.代码实现
- 添加单条数据与添加多条数据
- 两种方式赋值外键
- 两种方式存储数据
- peewee创建表
from peewee import *
from peewee import database_required
# 1.获取数据库的链接
db = MySQLDatabase('tornado_db', host='127.0.0.1', port=3306, user='root',passwd='root')
# 创建一个基础模型类
class BaseModel(Model):
class Meta:
database = db
# 2.创建表的结构-模型类
class Commany(BaseModel):
name = CharField(verbose_name='公司名称')
full_name = CharField(verbose_name='公司全名称')
year = IntegerField(verbose_name='开业时间')
class Meta:
table_name = 't_commany'
class Music(BaseModel):
name = CharField(verbose_name='音乐名称')
singer = CharField(verbose_name='演唱者')
duration = IntegerField(verbose_name='时长')
_type = IntegerField(verbose_name='类型')
# 3.创建关联关系
# 如果没有些field,会默认用另一张表的主键做外键
# 会创建相应的变量名id,比如commany_id
# commany并不是外键的名称,是一个外键对象,默认是commany_id
commany = ForeignKeyField(Commany, verbose_name='版权所属',backref='musics')
class Meta:
table_name = 't_music'
# 4.映射表
def init_table():
db.create_tables([Commany,Music])
# 添加单条数据方法1
def add_one1():
c1 = Commany()
c1.name = '广师大'
c1.full_name = '广东技术师范大学'
c1.year = 2000
c1.save()
m1 = Music()
m1.name = '青花瓷'
m1.singer = '周杰伦'
m1.duration = '2:20'
m1._type = '流行'
m1.commany = c1 # 赋值外键字段方法1:赋给主表的对象
m1.save()
# 添加单条数据方法2:
def add_one2():
m1 = Music(name='大鱼',singer='周深', duration='2:00', _type='流行', commany=1) # 赋值外键字段方法2:直接赋主表主键
m1.save()
# 增加多条数据方法
def add_many():
commanys = [
{
'name': '滚石唱片',
'full_name': '滚石国际音乐股份有限公司',
'year': 1980
},
{
'name': '华谊兄弟',
'full_name': '华谊兄弟传媒股份有限公司',
'year': 1994
},
{
'name': '海蝶音乐',
'full_name': '北京太合音乐文化发展有限公司',
'year': 1986
},
]
musics = [
{
"name": "你是我左边的风景",
"singer": "林志炫",
"duration": "2:20",
"_type": "摇滚",
"commany": 1
},
{
"name": "把你揉碎捏成苹果",
"singer": "薛之谦",
"duration": "2:10",
"_type": "摇滚",
"commany": 3
},
{
"name": "游戏人间",
"singer": "童安格",
"duration": "1:20",
"_type": "流行",
"commany": 2
},
{
"name": "故乡的云",
"singer": "费翔",
"duration": "2:40",
"_type": "摇滚",
"commany": 1
},
{
"name": "诺言Jason",
"singer": "青城山下白素贞",
"duration": "1:10",
"_type": "古典",
"commany": 3
},
{
"name": "勇敢的幸福",
"singer": "Sweety",
"duration": "1:23",
"_type": "古典",
"commany": 2
},
{
"name": "爱丫爱丫",
"singer": "By2",
"duration": "2:22",
"_type": "流行",
"commany": 1
},
{
"name": "我也曾像你一样",
"singer": "马天宇",
"duration": "2:28",
"_type": "流行",
"commany": 1
}
]
for c in commanys:
c1 = Commany(**c)
c1.save()
for m in musics:
m1 = Music(**m)
m1.save()
if __name__ == '__main__':
init_table()
# add_one1()
# add_one2()
add_many()