博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask 连接mysql相关操作
阅读量:6681 次
发布时间:2019-06-25

本文共 6883 字,大约阅读时间需要 22 分钟。

1   安装flask连接数据库模块flask-sqlalchemy

1
2
3
4
5
6
7
8
[root@django flask]
# pip install flask-sqlalchemy
Collecting flask
-
sqlalchemy
  
Downloading Flask
-
SQLAlchemy
-
2.0
.tar.gz (
93kB
)
    
100
% 
|
################################| 94kB 111kB/s
Requirement already satisfied (use 
-
-
upgrade to upgrade): Flask>
=
0.10 
in 
/
usr
/
lib
/
python2.
7
/
site
-
packages (
from
flask
-
sqlalchemy)
Collecting SQLAlchemy (
from 
flask
-
sqlalchemy)
  
Downloading SQLAlchemy
-
0.9
.
9.tar
.gz (
4.2MB
)
    
100
% 
|
################################| 4.2MB 16kB/s

2  安装mysql-python

[root@django flask]# pip install mysql-python

3  生成mysql数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@django flask]
# cat db.py
from 
flask 
import 
Flask
import 
MySQLdb
from 
flask.ext.sqlalchemy 
import 
SQLAlchemy
  
app 
= 
Flask(__name__)
app.config[
'SQLALCHEMY_DATABASE_URI'
=
''
db 
= 
SQLAlchemy(app)
 
class 
User(db.Model):
    
id 
= 
db.Column(db.Integer, primary_key
=
True
)
    
username 
= 
db.Column(db.String(
80
), unique
=
True
)
    
email 
= 
db.Column(db.String(
320
), unique
=
True
)
    
phone 
= 
db.Column(db.String(
32
), nullable
=
False
)
  
    
def 
__init__(
self
, username, email, phone):
        
self
.username 
= 
username
        
self
.email 
= 
email
        
self
.phone
= 
phone
if 
__name__ 
=
= 
'__main__'
:
        
db.create_all()

primary_key  主键      db.create_all()表示执行mysql语句

python db.py执行完后查看数据库有没有这个表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> use flask;
Reading table information 
for 
completion of table 
and 
column names
You can turn off this feature to get a quicker startup with 
-
A
 
Database changed
mysql> desc user;
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| Field    | 
Type         
| Null | Key | Default | Extra          |
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
id       
int
(
11
)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(
80
)  | YES  | UNI | NULL    |                |
| email    | varchar(
320
) | YES  | UNI | NULL    |                |
| phone    | varchar(
32
)  | NO   |     | NULL    |                |
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
4 
rows 
in 
set 
(
0.00 
sec)

 

以上就是显示说明是成功的mysql连接简单操作很轻松的

 

4  插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@django flask]
# cat  insert.db
from 
flask 
import 
Flask
import 
MySQLdb
from 
flask.ext.sqlalchemy 
import 
SQLAlchemy
  
app 
= 
Flask(__name__)
app.config[
'SQLALCHEMY_DATABASE_URI'
=
''
db 
= 
SQLAlchemy(app)
 
class 
User(db.Model):
    
id 
= 
db.Column(db.Integer, primary_key
=
True
)
    
username 
= 
db.Column(db.String(
80
), unique
=
True
)
    
email 
= 
db.Column(db.String(
320
), unique
=
True
)
    
phone 
= 
db.Column(db.String(
32
), nullable
=
False
)
  
    
def 
__init__(
self
, username, email, phone):
        
self
.username 
= 
username
        
self
.email 
= 
email
        
self
.phone
= 
phone
inset
=
User(username
=
'itmin'
, email
=
'itmin@qq.com'
, phone
=
'13812345678'
)
db.session.add(inset)
db.session.commit()

 

查看下数据库

1
2
3
4
5
6
7
8
9
mysql> select 
* 
from 
User;
ERROR 
1146 
(
42S02
): Table 
'flask.User' 
doesn't exist
mysql> select 
* 
from 
user;
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
id 
| username | email        | phone       |
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|  
1 
| itmin    | itmin@qq.com | 
13812345678 
|
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
1 
row 
in 
set 
(
0.00 
sec)

 

5  查询数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@django flask]
# cat select.db
from 
flask 
import 
Flask
import 
MySQLdb
from 
flask.ext.sqlalchemy 
import 
SQLAlchemy
  
<span style
=
"color: rgb(255, 0, 0);"
>
from 
sqlalchemy 
import
and_,not_,or_<
/
span>
app 
= 
Flask(__name__)
app.config[
'SQLALCHEMY_DATABASE_URI'
=
''
db 
= 
SQLAlchemy(app)
 
class 
User(db.Model):
    
id 
= 
db.Column(db.Integer, primary_key
=
True
)
    
username 
= 
db.Column(db.String(
80
), unique
=
True
)
    
email 
= 
db.Column(db.String(
320
), unique
=
True
)
    
phone 
= 
db.Column(db.String(
32
), nullable
=
False
)
  
    
def 
__init__(
self
, username, email, phone):
        
self
.username 
= 
username
        
self
.email 
= 
email
        
self
.phone
= 
phone
    
def 
__repr__(
self
):
        
return 
"<User '{:s}'>"
.
format
(
self
.username)
        
# return 'User %r' % self.username
select_
=
User.query.filter_by(username
=
'itmin'
).first()
print
(select_.
id
#精确查询并查找出ID
 
print
User.query.
filter
(User.email.endswith(
'@qq.com'
)).
all
()
#模糊查询
 
print
User.query.
filter
(User.phone.endswith(
'13812345678'
)).
all
()
 
print 
User.query.
filter
(User.username !
= 
'yoyo'
).first()
#反条件查询非
 
print
User.query.
filter
(not_(User.username
=
=
'yoyo'
)).first()
1
#反条件查询非
1
2
3
4
5
6
7
8
9
print 
User.query.
filter
(or_(User.username !
= 
'yoyo'
, User.email.endswith(
'@example.com'
))).first()   
#或查询
print 
User.query.
filter
(and_(User.username !
= 
'yoyo'
, User.email.endswith(
'@example.com'
))).first()  
#与查询
print 
User.query.limit(
10
).
all
() 
#查询返回的数据的数目
 
data_all
=
User.query.
all
()
print 
(data_all)
#查询全部
 
for 
in 
range
(
len
(data_all)):
 
print 
data_all[i].username
+
" "
+
data_all[i].email
+
" "
+
data_all[i].phone

#循环拿出全部数据

 

结果:

1
2
3
4
5
6
7
8
9
10
11
[root@django flask]
# python select.db
1
[<User 
'itmin'
>, <User 
'yoyo'
>]
[<User 
'itmin'
>]
<User 
'itmin'
>
<User 
'itmin'
>
<User 
'itmin'
>
[<User 
'itmin'
>]
[<User 
'itmin'
>, <User 
'yoyo'
>]
itmin itmin@qq.com 
13812345678
yoyo yy@qq.com 
13812345679

 

 

6  更新数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@django flask]
# cat update.py
from 
flask 
import 
Flask
import 
MySQLdb
from 
flask.ext.sqlalchemy 
import 
SQLAlchemy
  
app 
= 
Flask(__name__)
app.config[
'SQLALCHEMY_DATABASE_URI'
=
''
db 
= 
SQLAlchemy(app)
 
class 
User(db.Model):
    
id 
= 
db.Column(db.Integer, primary_key
=
True
)
    
username 
= 
db.Column(db.String(
80
), unique
=
True
)
    
email 
= 
db.Column(db.String(
320
), unique
=
True
)
    
phone 
= 
db.Column(db.String(
32
), nullable
=
False
)
  
    
def 
__init__(
self
, username, email, phone):
        
self
.username 
= 
username
        
self
.email 
= 
email
        
self
.phone
= 
phone
news
=
User.query.
all
()
print 
news
news[
1
].username
=
'test'
db.session.commit()

7   删除数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@django flask]
# cat delete.py
from 
flask 
import 
Flask
import 
MySQLdb
from 
flask.ext.sqlalchemy 
import 
SQLAlchemy
  
app 
= 
Flask(__name__)
app.config[
'SQLALCHEMY_DATABASE_URI'
=
''
db 
= 
SQLAlchemy(app)
 
class 
User(db.Model):
    
id 
= 
db.Column(db.Integer, primary_key
=
True
)
    
username 
= 
db.Column(db.String(
80
), unique
=
True
)
    
email 
= 
db.Column(db.String(
320
), unique
=
True
)
    
phone 
= 
db.Column(db.String(
32
), nullable
=
False
)
  
    
def 
__init__(
self
, username, email, phone):
        
self
.username 
= 
username
        
self
.email 
= 
email
        
self
.phone
= 
phone
 
name
=
User.query.filter_by(username 
= 
'bb'
).first()
db.session.delete(name)
db.session.commit()

转载地址:http://icsao.baihongyu.com/

你可能感兴趣的文章
在 Windows Git Bash 中安装 bash-git-prompt
查看>>
try catch finally
查看>>
不同方法/系统下复制文件时新文件的日期区别,以及查看文件创建时间、修改时间、访问时间的方法...
查看>>
scrapy添加新命令
查看>>
Hystrix异常处理及线程池划分
查看>>
「Vue.js」Vue-Router + Webpack 路由懒加载实现
查看>>
手摸手,带你用合理的姿势使用webpack4(下)
查看>>
iview 3.0.0 按需引入的bug
查看>>
服务端渲染到前端渲染,再到“服务端渲染”
查看>>
【Under-the-hood-ReactJS-Part11】React源码解读
查看>>
npm发布包一些注意事项和流程
查看>>
源码阅读(2)LinkedList
查看>>
echarts 与 highcharts
查看>>
浅谈高性能web前端技术栈——小白轻松做到减少HTTP请求
查看>>
Mac电脑使用帮助
查看>>
win10 安装 oh my zsh 和 windows git bash 设置别名提高效率
查看>>
antd 覆盖组件样式
查看>>
如何理解js的发布-订阅模式
查看>>
vertical-align:垂直对齐方式相关说明
查看>>
完全使用 Docker 开发 PHP 项目 (五): 生产环境 Swarm mode
查看>>