from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 数据库变量
HOST = "localhost"
PORT = 3306
DATA_BASE = "flask_db"
USER = "root"
PWD = "root"
DB_URI = f"mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}"
# 定义数据库的路由(URI)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
#FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead an
# d will be disabled by default in the future. Set it to True or False to suppress this warning.
# 需要添加一个参数
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 链接数据库
db = SQLAlchemy(app)
# 创建模型类
class User(db.Model):
__tablename__ = 't_user' # 可以不写,就会默认生成数据表user
id = db.Column(db.Integer,primary_key = True, autoincrement=True)
name = db.Column(db.String(32))
def __repr__(self) -> str:
return f'User: id={self.id} name={self.name}'
class News(db.Model):
__tablename__ = 't_news' # 可以不写,就会默认生成数据表user
id = db.Column(db.Integer,primary_key = True, autoincrement=True)
content = db.Column(db.String(100))
uid = db.Column(db.Integer, db.ForeignKey('t_user.id'))
user = db.relationship("User",backref = 'newss')
def __repr__(self) -> str:
return f'User: id={self.id} name={self.content}'
# 创建数据
def create_data():
user = User(name = "百战")
news = News(content = "Python内容")
user.newss.append(news)
db.session.add(user)
db.session.commit()
# 查询单表
def query_data_one():
# 单表查询就直接类名再query即可
users = User.query.all()
print(users)
# 多表查询
def query_data_many():
# 与之前的区别不大,就调用session方法有区别
rs = db.session.query(User, News.content).join(News, News.uid==User.id).all()
print(rs)
# 修改数据
def update_data():
rs = User.query.first()
rs.name = "nihaoa"
print(rs)
def delete_data():
news = News.query.first()
db.session.delete(news)
db.session.commit()
if __name__ == "__main__":
# db.drop_all()
# db.create_all()
# create_data()
# query_data_one()
# query_data_many()
update_data()
delete_data()
112.Flask_SQLAlchemy的使用
最新推荐文章于 2023-05-31 23:09:31 发布