【发布时间】:2018-02-28 10:24:08
【问题描述】:
背景:
我有一个用户可以上传文件的项目。在数据库中,我想存储上传文件的文件路径。
数据库中有 2 个表;一个Users 和FileUploadPath。这些表具有一对一的关系。
我目前拥有的 Flask-SQLAlchemy 模型是:
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////{}'.format(os.path.join(os.getcwd(), "test.db"))
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'Users'
userid = db.Column(db.Integer, primary_key=True, autoincrement=True)
fname = db.Column(db.String(80), nullable=False)
lname = db.Column(db.String(80), nullable=False)
phonenum = db.Column(db.String(10), nullable=False)
email = db.Column(db.String(60), nullable=False)
password = db.Column(db.String(60), nullable=False)
validated = db.Column(db.Boolean, default=False)
child = db.relationship('FileUploadPath', uselist=False, backref='Users')
class FileUploadPath(db.Model):
__tablename__ = 'FileUploadPath'
fileUploadID = db.Column(db.Integer, primary_key=True, autoincrement=True)
w9FilePath = db.Column(db.String(60), nullable=False)
gcFilePath = db.Column(db.String(60), nullable=False)
livescanFilePath = db.Column(db.String(60), nullable=False)
gcaFilePath = db.Column(db.String(60), nullable=False)
userID = db.Column(db.Integer, db.ForeignKey('Users.userid'))
要创建一个新用户,我使用以下命令:
newuser = User(fname='Bob', lname='Smith', phonenum='6551234567', email='bobsmith@gmail.com', password='fe287943hfbwiqey281')
使用此命令,我希望在FileUploadPath 表中看到userID;当前仅在Users 表中看到创建的用户,但在userID 列中看到NULL。
通过查询,我还希望查看与特定用户相关的所有上传文件路径信息。
模型的设置关系是否正确?如果不是,我将如何声明这种关系?
编辑:
我想要做的是将fileUploadID 存储在Users 表中。应该为每个创建的新用户插入FileUploadPath 表中的新行。因为当我创建一个新用户时,FileUploadPath 表中的所有列都将为空;因为新用户还没有上传任何文件。
【问题讨论】:
标签: python sqlalchemy flask-sqlalchemy