My code is:
#!/bin/python import os,sys from datetime import datetime from flask import Flask from database import db_session,init_db from models import Node version = '0.1' app = Flask(__name__) @app.route("/") def index(): return "hello" @app.route("/add") def add(): node = Node('test','test','this is a test',1) db_session.add(node) db_session.commit() return 'is ok' @app.teardown_request def shutdown_session(exception=None): print "Teardown 1 {0!r}".format(exception) db_session.remove() if __name__ == "__main__": app.run(debug=True)
my models.py, these are simple models, just Node
from sqlalchemy import Column,Integer,String,Text from database import Base class Node(Base): __tablename__ = 'nodes' id = Column(Integer, primary_key=True) title = Column(String(300)) tagnames = Column(String(125)) body = Column(Text()) nodetype=Column('node_type',Integer(11)) def __init__(self,title=None,tagnames=None,body=None,nodetype=0): self.title = title self.tagnames = tagnames self.body = body self.nodetype = nodetype def __repr__(self): return '<Node %r>' % (self.title)
my database.py, I do not use flask-sqlalchemy
from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('mysql://root: 123456@127.0 .0.1:3306/test', echo=True,convert_unicode=True) db_session = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): import flaskq.models Base.metadata.create_all(bind=engine,checkfirst=True)
when I first request "http://127.0.0.1►000/add" this code throws: AttributeError: the object "NoneType" does not have the attribute "request"
request again, everything is in order.