[英]Python Flask, SQLAlchemy relationship
I've been trying to fix this problems for a few hours already, I cannot manage to get SQLAlchemy working (it was working untill I put the two new functions, User and Registration) 我已经尝试解决这个问题几个小时了,我无法让SQLAlchemy工作(它正在工作,直到我把两个新功能,用户和注册)
from flask.ext.sqlalchemy import SQLAlchemy
from . import app
from datetime import datetime
db = SQLAlchemy(app)
class PasteCode(db.Model):
id = db.Column(db.Integer, primary_key = True)
codetitle = db.Column(db.String(60), unique = True)
codebody = db.Column(db.Text)
pub_date = db.Column(db.DateTime)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
parent_id = db.Column(db.Integer, db.ForeignKey('paste_code.id'))
parent = db.relationship('PasteCode', lazy = True, backref = 'children', uselist = False, remote_side = [id])
def __init__(self, codetitle, codebody, parent = None):
self.codetitle = codetitle
self.codebody = codebody
self.pub_date = datetime.utcnow()
self.parent = parent
class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
display_name = db.Column(db.String(30))
#pastes = db.Column(db.Integer, db.ForeignKey('paste_code.id'))
pastes = db.relationship(PasteCode, lazy = "dynamic", backref = "user")
class Registration(db.Model):
id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String(30), unique = True)
password = db.Column(db.String(100), unique = False)
This is the traceback it gives me when running: 这是它在运行时给我的回溯:
OperationalError: (OperationalError) no such table: paste_code u'SELECT paste_code.id AS paste_code_id, paste_code.codetitle AS paste_code_codetitle, paste_code.codebody AS paste_code_codebody, paste_code.pub_date AS paste_code_pub_date, paste_code.user_id AS paste_code_user_id, paste_code.parent_id AS paste_code_parent_id \nFROM paste_code' ()
I also tried this: 我也试过这个:
from flask.ext.sqlalchemy import SQLAlchemy
from . import app
from datetime import datetime
db = SQLAlchemy(app)
class PasteCode(db.Model):
id = db.Column(db.Integer, primary_key = True)
codetitle = db.Column(db.String(60), unique = True)
codebody = db.Column(db.Text)
pub_date = db.Column(db.DateTime)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
parent_id = db.Column(db.Integer, db.ForeignKey('pastecode.id'))
parent = db.relationship('PasteCode', lazy = True, backref = 'children', uselist = False, remote_side = [id])
def __init__(self, codetitle, codebody, parent = None):
self.codetitle = codetitle
self.codebody = codebody
self.pub_date = datetime.utcnow()
self.parent = parent
class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
display_name = db.Column(db.String(30))
pastes = db.relationship(PasteCode, lazy = 'dynamic', backref = 'user')
#pastes = db.relationship(PasteCode, lazy = "dynamic", backref = "user")
class Registration(db.Model):
id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String(30), unique = True)
password = db.Column(db.String(100), unique = False)
And I got this error: 我收到了这个错误:
ArgumentError: Could not determine join condition between parent/child tables on relationship PasteCode.parent. Specify a 'primaryjoin' expression. If 'secondary' is present, 'secondaryjoin' is needed as well.
Any idea? 任何的想法? Thank you!
谢谢!
The way I fixed it was simple, I added 我补充说,我修复它的方式很简单
__tablename__ = "paste_code"
and everything worked as it should, I think SQLAlchemy wasn't checking the table name properly. 并且一切正常,我认为SQLAlchemy没有正确检查表名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.