如何使用Flask-SQLAlchemy安全地将数据从CSV复制到Postgres数据库?

时间:2018-11-07 12:13:05

标签: python postgresql csv flask flask-sqlalchemy

我在Flask中构建了一个运行日志记录Webapp,并通过Flask-SQLalchemy由Postgres数据库支持,并托管在Heroku上。

我想输入我以前使用Google表单生成的应用之前的运行数据。我有一个类似this的CSV结构。 (我没有足够的声誉积分来嵌入图像。)

我的数据库模型如下:

#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)

我已经阅读了Postgres中提供的COPY命令,并且熟悉从python中的CSV读取,但是我从未编写过原始sql。

我想弄清楚:

  1. 将这些数据从CSV移到数据库中的最佳方法是什么?
  2. 如何确保以与数据库中已经存在的数据一致的格式插入数据(尤其是日期)?

感谢您的帮助!

0 个答案:

没有答案