|
|
楼主 |
发表于 2024-7-30 08:13:28
|
显示全部楼层
上面的测试结果。来自一个调试的步骤。
% c }& L, {6 [% J, O 先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。8 R" A2 M' G7 U2 _$ a
1
( I) E9 d$ ?! Q8 O2 a6 k# [首先打开cmd执行命令:
2 f$ b6 U: ]% F: n2 ~! C* D0 N0 F: ]- U
python C:\Users\st\Desktop\hello.py shell
# I0 p1 n1 q9 D5 [( s* R* p8 S7 g' ^% ?
打开如下的python shell环境:; r0 {! J5 C* L, X! A1 Q( \
hello.py shell
* }* x1 t* v' i7 d% `& f& w7 ~% ^8 J9 X4 G1 O0 b. m" E
接下来,我们就来看看如何操作MySQL数据库:- Q% k4 |5 M: }, Q
在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:
. L/ R' \; x8 S1 k9 n9 A1 f) P# j& xfrom hello import db
2 l$ G) H( `) u) c9 a+ x% l7 r/ j! N0 |7 D& u# s
" A. d: f" @# l/ O4 g% a9 C \" o* o1、创建表
( `' M M/ K. b. y) z" W4 n! zdb.create_all()
: n6 ]- R) X* B2 r, D4 C8 E" ?2、删除表
- u+ b. X! q: o8 n& i0 w6 Ddb.drop_all()9 w; W/ j! }% v7 a1 _
$ u- ]. R: L2 I' D8 m' {
5 ?: \+ v- w+ t2 y
3、插入数据, V/ s" q7 ?/ }1 u& D
from hello import User3 i3 l9 h5 y& @0 W5 u/ a
u = User(username='st',email='st@example.com', passowrd='xxxx')- F" P+ A& b: [0 u
db.session.add(u)4 g, j/ F! w" R! Q5 q
db.session.commit()
) @1 a9 k& H' P& o( k# ]2 A7 h5 V, @+ m9 {
4、查询数据9 d& W9 t. n4 D' D
(1)filter_by查询(精确查询):, m4 J$ O" g0 l' N6 m
’user= User.query.filter_by(username='st').first()6 U, i( M3 }1 ^1 E* _0 R
) f* p c5 O/ B4 C3 X1 ?. a
3 W5 E! p5 Y$ X
print user
" j& M" T1 f) I9 l1 J7 F2 c<User u'st'>. f K$ D3 e+ _+ ~) x3 t0 j- a
(2)get(主键):(id一般为主键)8 W! ?+ u8 @6 g8 Z
User.query.get(1): s% N% J1 R! _
<User u'st'>
6 h) V. g X& h2 l) }2 T2 r1 @(3)filter查询(模糊查询):
5 k h& t% ^0 U# S( k1 RUser.query.filer(User.username.endswith('t')).all()* Y) F- j& S8 s8 ~" J3 F) g, M
[<User u'st'>]% u- t. b3 l3 h* A2 H g
' S# y: U' T! X0 R(4)逻辑非查询:5 C. ^: ?2 [( D: Y
user = User.query.filter(User.username != 'st').first()% A" C2 T0 p/ ~& h
print user
0 B- x2 A/ N& ?' |<User u'stt'>
8 g7 Z; w' H' ]& O或* V) J5 l6 O& C8 X
from sqlalchemy import not_3 d) r/ k% p5 g
user = User.query.filter(not_(User.username == 'st')).first()- r3 I$ F5 K5 p6 K$ N+ ?
print user/ {- B( U; O( c* j+ `
5 p7 U& Q" K3 |2 G/ [4 h6 i# t1 ~
<User u'stt'>
/ s1 N; L/ Y6 V3 s" q' J$ C" s" ^! t# T1 p+ x
(5)逻辑与
9 j& ]4 G5 o6 A1 Zfrom sqlalchemy import and_; G. X, p; s: D& s
user = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()4 n6 }. s/ P. g
, W O: k R% I$ G3 h/ C
print user
8 U) ^0 [4 b6 ~1 l: i, x: V. Y) {; j F4 B9 h# ]9 R0 r
<User u'stt'>
3 ^( ]# z" p. V, [( Q(6)逻辑或
8 l% {$ N, O9 O# `; x- K$ Vfrom sqlalchemy import or_
2 _. l. U0 g6 K ~5 t% Luser = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()
: E1 Y; Z0 d) E6 b; a1 d6 b
2 N* N2 n2 U6 V9 F# M1 ~2 y$ S: [3 F! a5 t7 ?
print user
! y6 W c6 h& G" W; W6 i" h9 o; y7 a2 `, Q* l) l
<User u'stt'>
0 \1 p1 E' `2 n8 X/ g(7)first()返回查询到的第一个对象
& y; @/ A, p3 z/ Suser = User.query.first()' s, O7 ^" R5 }$ V0 Y" q5 c; E; o
print user& p7 w5 d7 }; J0 R2 Y: ~1 k
" i7 B. {! |# g<User u'st'>: z1 Y v" s* R- q
2 L, Q( K' [# i1 Y: l" q* s
(8)all()返回查询到的所有对象
, R }! {- X% h3 K6 B6 t) A; F1 vuser = User.query.first()
" ?& H& x: v) B! h4 f% dprint user4 Z5 M. s; }4 P5 \- [" r
, s) n' d+ h; X$ o& u
5、删除数据
6 l* \0 h! L* i3 e$ {- juser = User.query.first()% Y2 }! i/ M1 X, q5 c( }
db.session.delete(user)
* j0 k! P, C) L7 ^3 x) a1 x1 w& ldb.session.commit()- j3 C9 A/ R& ?$ f
User.query.all()5 y# b" b) O0 z% q; m
[<User u'stt'>]
7 v# l# ]/ {; i
( J& k. E4 D/ u; @7 I6、更新数据$ ]* }3 ~( i% U! \5 e( S
user = User.query.first()
5 T) _/ r. K9 iuser.username = 'ballking'9 H5 Y: r, c7 i1 o* v
User.query.first()6 ~1 V2 g& D9 ?/ d" F8 t
<User u'ballking'>+ n4 W8 [. D6 W3 w2 i
9 j; v# E" T; v: ]: {
- u6 G* \7 y: W, C8 {) W3 Q0 D; @* `! t2 n+ {% G4 w
|
|