- 积分
- 16841
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2024-7-30 08:13:28
|
显示全部楼层
上面的测试结果。来自一个调试的步骤。1 o1 I6 q3 h3 A9 q# O' ^
先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。9 O, L( k% M& |% y) C6 b. ^" T" _
1
; t* o6 m5 J* f0 D首先打开cmd执行命令:
" a# j9 y; r# |) _+ d+ N; E0 [0 T1 ?- X/ u* K
python C:\Users\st\Desktop\hello.py shell
& k. c1 B4 ?2 D0 J( B& Z$ f* P5 O- \9 n* l; ` a4 U3 F
打开如下的python shell环境:
% g5 p% {, w, mhello.py shell
5 Q, G4 J I. o' F8 }- v
2 o" C& O: n; o+ I6 P接下来,我们就来看看如何操作MySQL数据库:
/ L( ^ U Z9 e) J0 R' f在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:4 t, w$ o: K) p+ \
from hello import db
" c! ^( R* e5 Q- T1 ~. u1 K
0 Z& R+ u2 E/ ?3 p
2 K0 b. ?) [* ]" T) y# ?1、创建表
; [3 V6 X S4 F# c9 i: v6 C8 @7 Y1 o9 Fdb.create_all()
! D$ |. Q/ x5 x; N: ?, g2、删除表
4 E, M$ q2 H" f* Hdb.drop_all()
5 x- }9 w) t# v: }3 M2 p. ^- H+ d. @. v. E) j9 i
; M3 ?0 L3 G, g
3、插入数据
& ?5 `; g5 E5 ^3 p& r8 b: `from hello import User
' O! @/ I+ @. g& u- yu = User(username='st',email='st@example.com', passowrd='xxxx')8 c% k2 q! K3 I+ b8 l1 R* a, r# l
db.session.add(u)/ `" o8 H9 h( G& \4 e) x
db.session.commit()
0 O- s( k* s' a' e! l" h& R6 y4 W
" l5 U" d K& ^4、查询数据: X& y1 i" M6 s$ G
(1)filter_by查询(精确查询):
2 x& M- R: Z# \6 g& N5 x0 x’user= User.query.filter_by(username='st').first(). n6 t& \" Z g [% F
- O3 r% q9 I; D- \
& Y& @+ @, E: o# C; x: s/ M$ d3 S
print user
4 x6 O. M2 K4 v) r1 T4 m/ \<User u'st'>
, _' M, v" T. K0 P9 K(2)get(主键):(id一般为主键)4 I+ V: E! `. ?2 F
User.query.get(1)( F, W. f* q5 B4 a/ ~$ \
<User u'st'>
2 z* ^& F4 D. C6 q' ^9 V* Y(3)filter查询(模糊查询):
) u0 b5 D c, ^7 F7 i# n- o7 ?User.query.filer(User.username.endswith('t')).all()
% n! h X0 `9 ~& _9 k7 H+ x[<User u'st'>]- T5 l$ U5 b7 U5 W: J6 d
1 x! y) z" q+ N/ x; w" i! i. R8 V
(4)逻辑非查询:* n! w3 I p, D4 I m
user = User.query.filter(User.username != 'st').first() W" Y `+ v9 _
print user5 B- x b. V* [/ h* \2 h L
<User u'stt'>
$ V2 [6 R6 I! M, P4 [或
% f% C1 q* g- t2 cfrom sqlalchemy import not_' r+ ?( J) F5 T
user = User.query.filter(not_(User.username == 'st')).first()
6 K! i' ]' R/ {2 Zprint user
e6 I1 M8 c+ y; l8 N6 N% X3 k3 W) Z
<User u'stt'>8 z5 l) w+ f4 O# N% j; q" N* t, J
6 S; Z) }- ~% J
(5)逻辑与: w. F* p7 o e$ H' r7 P9 L
from sqlalchemy import and_8 R" c$ v5 @0 S
user = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()1 N( m; h% _6 F. ^
, `% v1 Y2 c% f, H2 oprint user7 F' Z/ h9 J) _; O. c" d7 b5 x
0 W* n5 z- o- a& {$ {+ H<User u'stt'>, s J# N! x3 R2 L% x$ H' c% K
(6)逻辑或
6 C! m; ?# I, R8 Z0 t" {; i% f0 efrom sqlalchemy import or_$ X% k$ X$ h$ L$ _& z$ g' _
user = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()
) D+ n, t- G( A/ K" x
4 G5 ?- `& j) v7 U5 I; T# Z; w0 i* A
print user
# V7 I; n- g& T5 _+ f( ^7 V% ^) a6 ?
<User u'stt'>
& @, P- x) A4 P3 |# Y1 o: h) I(7)first()返回查询到的第一个对象
4 g( q9 G8 N/ ? p. Juser = User.query.first()
3 n/ V. r ^" K' T3 g" t x! y2 }print user) W, Q. ~" D, X% W g4 Q. u# m
2 o$ @: H5 `& r' A
<User u'st'>' Q0 E* o4 z& l O9 I# q# |1 _3 u
5 Z5 d/ D: i- s0 Z(8)all()返回查询到的所有对象
7 f$ C+ y/ _' i' R1 H; Juser = User.query.first()
" |; l- A X2 Z I, yprint user
: ^# K: u/ a- e5 i @; d5 s$ K( v% k, X4 t. A& T
5、删除数据" Y, D$ H9 U4 }6 s- H/ b4 u9 y6 M
user = User.query.first()
& t0 g6 ]( Z$ f8 O c" h+ B. A0 odb.session.delete(user) _! u7 V# A5 L5 ?( Q1 J/ `
db.session.commit()
! F( U! |) Y6 d ?: i V! vUser.query.all()
L) I6 k$ h2 @2 V[<User u'stt'>]
6 u; x7 h2 d2 g, r$ V+ Y* e! Y- n1 s2 Z6 A+ N( J1 q
6、更新数据
& n5 U# _0 q2 ]* K$ j: J, Tuser = User.query.first()& _$ ]' F' P I4 `
user.username = 'ballking'! F7 ?4 @+ v& ^2 E) F/ {
User.query.first()/ P3 r% }0 I k' g" R6 d; q+ P
<User u'ballking'>
[' D, I0 i8 J3 N" f* S+ n# Z6 y. ?' f5 D% j3 N
8 G- _( r! ]9 A: |$ `! T8 e
' v' H; L' G. Y2 g4 F# j7 ^4 W! U Q
|
|