您的位置:首页 > 数据库

flask-sqlalchemy实例

2016-06-14 23:43 302 查看
from flask import Flask,render_template_string,request,redirect
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///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)
email = db.Column(db.String(120), unique=True)

def __init__(self, username, email):
self.username = username
self.email = email

def __repr__(self):
return '<User %r>' % self.username
db.drop_all()
db.create_all()
admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')
db.session.add(admin)
db.session.add(guest)
db.session.commit()
#users = User.query.all()
#print(users)
#admin = User.query.filter_by(username='admin').first()
#print(admin)
@app.route('/user/show/<username>')
def show_user(username):
user = User.query.filter_by(username=username).first_or_404()
return render_template_string('''姓名:{{user.username}}<br>
电子邮件:{{user.email}}
'''
, user=user)
#return user
@app.route('/user/list')
def list_user():
users=User.query.all()
return render_template_string('''
<table border="1"><tr><td>用户名</td><td>电子邮件</td></tr>
{% for user in users %}
<tr><td>{{user.username}}</td><td>{{user.email}}</td></tr>
{% endfor%}
</table
''' ,users=users)
@app.route('/user/add')
def add_user():
# /user/add?username=yangjing&email=772890@qq.com
if request.args.get('username'):
username=request.args.get('username')
email=request.args.get('email')
db.session.add(User(username,email))
db.session.commit()
return redirect('/user/list')
else:
return '''<form action="/user/add" method="get">
用户名:<input type="text" name="username"/><br>
电子邮件:<input type="text" name="email"/><br>
<input type="submit" value="提交"/><br>
</form>
'''
@app.route('/user/delete/<username>')
def delete_user(username):
User.query.filter(User.username==username).\
delete()
db.session.commit()
return redirect('/user/list')

if __name__=='__main__':
app.run(debug=True)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: