一.基础步骤:
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()) #按照组
二.实例展示:
我们先看他们的结构
————init————的文件
model.py
views.py
main.py