Ваш код работает на меня.Есть ли что-то еще, что вы не включили?Как вы выполняете создание БД?
Вот как я это запустил.Мне пришлось добавить своих собственных пользователей и группы и удалить pidgen.get (), так как мне не ясно, откуда они берутся.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import pytz
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
class Group(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
def __repr__(self):
return '<Group %r>' % self.name
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(500))
body = db.Column(db.String(10000))
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
children = db.relationship('Post', backref='parent', lazy='dynamic')
group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
parent_id = db.Column(db.Integer, db.ForeignKey('post.id'))
def __repr__(self):
return '<Post {}>'.format(self.body)
db.create_all()
Запуск с:
python testapp.py
Даетмне это
sqlite> .schema post
CREATE TABLE post (
id INTEGER NOT NULL,
title VARCHAR(500),
body VARCHAR(10000),
timestamp DATETIME,
user_id INTEGER,
group_id INTEGER,
parent_id INTEGER,
PRIMARY KEY (id),
FOREIGN KEY(user_id) REFERENCES user (id),
FOREIGN KEY(group_id) REFERENCES "group" (id),
FOREIGN KEY(parent_id) REFERENCES post (id)
);
CREATE INDEX ix_post_timestamp ON post (timestamp);