from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(name)
db = SQLAlchemy(app)
#配置-项目的根路径
BASE_DIR = os.path.dirname(os.path.abspath(file))
连接mysql,要按照pymysql ; root:123456@127.0.0.1 用户名:密码@
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql+pymysql://root:123456@127.0.0.1/myflask’
#显示mysql语句
#app.config[‘SQLALCHEMY_ECHO’] = True
#一个人有 多个地址
class Person(db.Model):
tablename=‘my_person’
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name = db.Column(db.String(80),unique=True)
addresses = db.relationship(‘Address’,backref=‘person’,lazy=‘dynamic’,cascade=‘all, delete-orphan’)
class Address(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
address = db.Column(db.String(69))
person_id = db.Column(db.Integer,db.ForeignKey(‘my_person.id’))
def init():
# db.drop_all()#删除表
db.create_all() #创建表到数据库
# 添加
def add1():
a = Person(name='yes')
db.session.add(a)
db.session.commit() #提交之后才有id
addr1 = Address(address='广州',person_id=a.id)
addr2 = Address(address='深圳',person_id=a.id) #一个人增加多个地址
db.session.add(addr1)
db.session.add(addr2)
db.session.commit()
#修改
def update1():
b = Person.query.get(2) # 获取对象
b.name='panpan23' #修改
db.session.commit()
# 删除
def delete1():
# 级联删除只要主键被删除,外键也会被删除,某人被删除,所对应的地址都会被删除
p = Person.query.get(1)
db.session.delete(p)
db.session.commit()
#查询
def select():
person = Person.query.filter_by(name='panpan').first()
print(person.name)
print(person.id)
adrs = Address.query.filter_by(person_id=person.id) #获取到的是多个地址
for adr in adrs:
print(adr.address)
if __name__ == '__main__':
# init()
# add1()
update1()
# delete1()
# select()