一.基础步骤:

1.导入数据库模块

students = Student.query.all() #查询所有
students = Student.query.filter_by(age = 18) #按条件查询
student = Student.query.get(1) #自动以主键查询
students = Student.query.group_by("age") #按照组

2.基于应用进行sqlalchemy的配置

app = Flask(__name__)

app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:////Project/FlaskProject/OAProject/flask.db'

#上边这一条语句的意思是创建数据库flask.db,创建的位置是从////跟目录(我的是D盘,然后进入项目)

app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True(这条命令请看下表)

SQLALCHEMY_DATABASE_URI

用于连接数据的数据库。例如: sqlite:////tmp/test.db mysql://username:[email protected]/db

 

SQLALCHEMY_BINDS

一个映射绑定 (bind) 键到 SQLAlchemy 连接 URIs 的字典。 更多的信息请参阅 绑定多个数据库。

 

SQLALCHEMY_ECHO

如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。

 

SQLALCHEMY_RECORD_QUERIES

可以用于显式地禁用或者启用查询记录。查询记录 在调试或者测试模式下自动启用。更多信息请参阅 get_debug_queries()。

 

SQLALCHEMY_NATIVE_UNICODE

可以用于显式地禁用支持原生的 unicode。这是 某些数据库适配器必须的(像在 Ubuntu 某些版本上的 PostgreSQL),当使用不合适的指定无编码的数据库 默认值时。

 

SQLALCHEMY_POOL_SIZE

数据库连接池的大小。默认是数据库引擎的默认值 (通常是 5)。

 

SQLALCHEMY_POOL_TIMEOUT

指定数据库连接池的超时时间。默认是 10。

 
 

SQLALCHEMY_POOL_RECYCLE

 
 

SQLALCHEMY_MAX_OVERFLOW

 
 

SQLALCHEMY_TRACK_MODIFICATIONS

 

 

3.实例化对象

db = SQLAlchemy(app)

 

4.定义数据模型

class Student(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(32))
    age = db.Column(db.Integer)
    gender = db.Column(db.String(32))
    classes = db.Column(db.String(32))

    def __repr__(self):#在交互界面,如果用str是不起作用的
        return self.name

db.create_all()#添加到数据库中

5.对数据库的操作

(1)增:

第一种方法,单个导入

v = Student(name = "老周",age = 18,gender = "男",classes = "Python")
db.session.add(v)

db.session.commit()#注意这步!!!必须要!

第二种方法,集体导入
v = Student(name = "老周",age = 18,gender = "男",classes = "Python")
k = Student(name = "老赵",age = 18,gender = "男",classes = "Python")
m = Student(name = "老钱",age = 18,gender = "男",classes = "Python")
a = Student(name = "老孙",age = 18,gender = "男",classes = "Python")
b = Student(name = "老李",age = 18,gender = "男",classes = "Python")

db.session.add_all([v,k,m,a,b])

db.session.commit()#注意这步!!!必须要!

(2)删:

先得到他!再删除他

student = Student.query.get(1)
 
#get方法很奇葩!自动默认获得主键

db.session.delete(student)

db.session.commit()

(3)改

先得到他,再修改他

student = Student.query.get(2)
student.name = "小陈"
db.session.commit()

(4)查

 

students = Student.query.all() #查询所有
students = Student.query.filter_by(age = 18) #按条件查询
student = Student.query.get(1) #自动以主键查询
students = Student.query.group_by("age") #按照组

(5)排序

#排序
students = Student.query.order_by(Student.age)
#倒序排序
students = Student.query.order_by(Student.age.desc()) #按照组
 

 

二.实例展示:

我们先看他们的结构

Flask的基础步骤和详解

————init————的文件

Flask的基础步骤和详解

model.py

Flask的基础步骤和详解

views.py

Flask的基础步骤和详解

main.py

Flask的基础步骤和详解

 

相关文章: