Индивидуальная связь DB Модель не работает

kstullich спросил: 03 февраля 2018 в 11:11 в: python

Фон:

У меня есть проект, в котором пользователи могут загружать файлы. В базе данных я хочу сохранить путь к загруженному файлу.

В базе данных есть 2 таблицы; a Users & FileUploadPath. Эти таблицы имеют отношение "один к одному".

В модели Flask-SQLAlchemy, которую я сейчас:

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = 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')

С помощью этой команды я ожидаю увидеть userID в таблице FileUploadPath; в настоящее время видя только созданного пользователя в таблице Users, но NULL внутри столбца userID.

С запросом я также хочу чтобы просмотреть всю информацию о загруженных файлах, относящуюся к определенному пользователю.

Правильно ли установлена ​​взаимосвязь между настройкой модели? Если нет, как бы я хотел объявить связь?

EDIT:

Что я хочу сделать, это сохранить fileUploadID внутри таблицы Users. Новая строка внутри таблицы FileUploadPath должна быть вставлена ​​для каждого нового пользователя, который создается. Потому что, когда я создаю нового пользователя, все столбцы внутри таблицы FileUploadPath будут пусты; поскольку новый пользователь еще не загрузил файлы.

0 ответов