Итак, я собираюсь создать спортивную базу данных sqlite с помощью peewee и пытаюсь выяснить, как вставить в базу данных данные, которые уже были вставлены для определенных таблиц.
Например, у меня есть этот код, который отлично работает при первом запуске цикла, но выдает IntegrityError во втором цикле, поскольку арена "mackey" уже определена.
Как мне написать это так, чтобы во второй раз, когда он проходит через цикл, он распознал, что «Mackey Arena» в «Уэст-Лафайет, Индиана» уже был создан, и использует этот venue_id вместо создания второгоРяд места?
from peewee import *
db = SqliteDatabase('pndb.db')
class Venue(Model):
Name = CharField(unique = True)
City = CharField()
State = CharField()
class Meta:
database = db
class Team(Model):
Name = CharField(unique = True)
class Meta:
database = db
class Game(Model):
DateTime = DateTimeField()
NeutralSite = BooleanField()
ConferenceMatchup = BooleanField()
venue = ForeignKeyField(Venue)
Attendance = IntegerField()
Status = CharField()
class Meta:
database = db
class TeamGame(Model):
game = ForeignKeyField(Game)
team = ForeignKeyField(Team)
HomeAway = CharField()
class Meta:
database = db
db.connect()
db.create_tables([Game,Venue,TeamGame,Team])
from datetime import date
for i in range(1,5):
mackey = Venue.create(Name = 'Mackey Arena',City = 'West Lafayette',State = 'Indiana')
purdue = Team.create(Name = 'Purdue')
pGame = Game.create(DateTime = date(2019,i,2),NeutralSite = False, ConferenceMatchup = True, venue = mackey,Attendance = 3000,Status = 'completed')
tG = TeamGame.create(game = pGame,team = purdue, HomeAway = 'Home')
tG.save()