1+ # -*- coding: utf-8 -*-
2+ """
3+ 4+ @description:
5+ """
6+
7+ from flask_sqlalchemy import SQLAlchemy
8+ from flask import Flask
9+
10+
11+ app = Flask (__name__ )
12+ # 此处是配置SQLALCHEMY_DATABASE_URI, 前面的mysql+mysqlconnetor指的是数据库的类型以及驱动类型
13+ # 后面的username,pwd,addr,port,dbname分别代表用户名、密码、地址、端口以及库名
14+ app .config ['SQLALCHEMY_DATABASE_URI' ] = 'mysql+pymysql://root:@127.0.0.1:3306/demo'
15+ # 创建1个SQLAlichemy实例
16+ db = SQLAlchemy (app )
17+
18+
19+ # 定义1个类(由db.Model继承),注意这个类是数据库真实存在的,因为我是针对已有数据库做转化
20+ # 我的数据库结构见下图 其中role是数据库的一张表名
21+ class role (db .Model ):
22+ # id是主键db.Column是字段名, db.INT是数据类型
23+ id = db .Column (db .INT , primary_key = True )
24+ name = db .Column (db .String (99 ), unique = False )
25+ name_cn = db .Column (db .String (99 ), unique = False )
26+
27+ def __init__ (self , id , name , name_cn ):
28+ self .id = id
29+ self .name = name
30+ self .name_cn = name_cn
31+
32+ def __repr__ (self ):
33+ return '<User %r>' % self .name
34+
35+ # 初始化role 并插入数据库
36+ test_role1 = role (10 , 'supervisol' , '超超超超级管理员' )
37+ test_role2 = role (11 , 'your try' , '你试试哦' )
38+ db .session .add (test_role1 )
39+ db .session .add (test_role2 )
40+ db .session .commit ()
41+
42+ #查询数据库
43+ a = db .session .query (role ).filter_by (id = 2 ).first () # 查询role表中id为2的第一个匹配项目,用".字段名"获取字段值
44+ print (a )
45+ b = db .session .query (role ).all () # 得到一个list,返回role表里的所有role实例
46+ print (b )
47+ db .session .query (role ).filter (role .id == 2 ).first () # 结果与第一种一致
48+ # 获取指定字段,返回一个生成器 通过遍历来完成相关操作, 也可以强转为list
49+ d = db .session .query (role ).filter_by (id = 2 ).values ('id' , 'name' , 'name_cn' )
50+ print (list (d ))
51+ # 模糊查询
52+ e = db .session .query (role ).filter (role .name_cn .endswith ('管理员' )).all () # 获取role表中name_cn字段以管理员结尾的所有内容
53+ print (e )
54+ # 修改数据库内容
55+ user = db .session .query (role ).filter_by (id = 7 ).first () # 将role表中id为6的name改为change
56+ user .name = 'change'
57+ db .session .commit ()
0 commit comments