SQLAlchemy 外键约束
config.py
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/test01?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = False
app.py
from flask import Flask
from sqlalchemy import Column,Integer,String,Text,ForeignKey
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app=app)
app.config.from_object('config')
class UserInfo(db.Model):
__tablename__ = 'tbl_user'
id = Column(Integer,primary_key=True,autoincrement=True)
name = Column(String(32))
addtime = Column(DateTime,default=datetime.now())
class Details(db.Model):
__tablename__ = 'tbl_details'
id = Column(Integer,autoincrement=True,primary_key=True)
email = Column(String(255))
phone = Column(String(20))
# tbl_details表中的uid字段和tbl_user表中的id 建立主外键关系
uid = Column(Integer,ForeignKey('tbl_user.id'))
# 绑定关系,建立查询。
user = db.relationship('UserInfo',backref=db.backref('details'))
db.create_all()
#通过手机号获取用户信息
@app.route('/get_userinfo_by_phone')
def get_userinfo_by_phone():
details = Details.query.filter_by(phone='xxxx').first()
if details.user:
name = details.user.name
else:
name = '暂无信息'
return name
# 通过用户名获取用户手机号码
@app.route('/get_phone_by_username')
def get_phone_by_username():
user = UserInfo.query.filter_by(name='付强').first()
if user.details:
phone = user.details[0].phone
else:
phone = '无手机号码'
return phone
if __name__ == '__main__':
app.run(debug=True)