Я создал веб-приложение для ведения журнала выполнения во Flask, поддержанное базой данных Postgres посредством Flask-SQLalchemy и размещенное на Heroku.
Я хочу ввести данные предыдущих прогонов, которые я выполнял до того, как запустил приложение, сгенерированное формой Google. У меня есть CSV, структурированный как this . (У меня недостаточно очков репутации для встраивания изображения.)
И мои модели базы данных выглядят так:
#Users Model
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
runs = db.relationship('Run', backref='owner')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def __repr__(self):
return '<User {}>'.format(self.username)
#Runs Model
class Run(db.Model):
id = db.Column(db.Integer(), primary_key=True)
date_posted = db.Column(db.DateTime(), index = True, default = datetime.utcnow)
distance = db.Column(db.Float())
run_time = db.Column(db.Integer())
calories_burned = db.Column(db.Integer())
owner_id = db.Column(db.Integer, db.ForeignKey('user.id'))
def __repr__(self):
return '<Run {}>'.format(self.distance)
Я читал о команде COPY, доступной в Postgres, и знаком с чтением из CSV на python, но я никогда не писал raw sql.
Я хочу выяснить:
- Какой лучший способ переместить эти данные из моего CSV в мою базу данных?
- Как я могу гарантировать, что данные (особенно даты) вставляются в формате, который соответствует данным, уже присутствующим в базе данных?
Я ценю помощь!