|
|
楼主 |
发表于 2024-7-30 08:13:28
|
显示全部楼层
上面的测试结果。来自一个调试的步骤。
# Q2 S: N; ?9 B! l& v 先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。* L l; S& D" X) Q7 X
1& q. h6 g' K( G' _% y; U
首先打开cmd执行命令:
f, d7 O% ]- O6 w7 H' x9 t" s- u1 ]) M6 }% Q2 H' _
python C:\Users\st\Desktop\hello.py shell- A2 v/ W/ n* a9 p# H8 |
$ J, v5 O. o. }! p7 @
打开如下的python shell环境:- [7 G) q' x8 [- L% q* p
hello.py shell
6 W! k* u; C" W w* G- M3 Z* A- r5 C: d
接下来,我们就来看看如何操作MySQL数据库:
# n* P4 P8 F+ e& s3 n+ k( ]在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:: F7 ?2 h" r4 F; Y7 }
from hello import db% U0 L! y6 g2 z/ i
$ @, l( ^! m% P% \) E Q
( \/ R9 h9 \( w$ s2 y1、创建表
; Z/ U' m) w! Pdb.create_all()4 J( C L% F3 } M& K4 @( M9 R( X
2、删除表/ C$ j X& B3 E K, w
db.drop_all()
3 O" b2 i4 h+ v" t8 c4 S
6 a2 ` A+ y, T2 v7 T/ R# c
3 V# G, H3 B/ q {% ^, w7 @# i4 b3、插入数据' c x7 J! x+ e2 Z3 h
from hello import User
! |( Z3 R7 ~' p0 W0 Zu = User(username='st',email='st@example.com', passowrd='xxxx')
9 K4 ]6 T1 ~" E! B( Fdb.session.add(u)
% F! u5 e9 r1 j4 Adb.session.commit()
% h9 l! z# f( S& G
b( v% S3 w' ]4、查询数据
/ b6 N6 l* d- D(1)filter_by查询(精确查询):
3 J2 i+ y1 X) i: J8 q4 H! ?’user= User.query.filter_by(username='st').first()
/ i- h8 n" ?0 x }6 Q. {" }& c8 T( t6 E/ t* M g7 K6 M: n- T
* D1 {5 J1 Y4 z5 ?! A J- p. V
print user
r/ ~( m0 H! E. s' Z8 ^8 R<User u'st'>" R+ x- |+ X R; S. I4 Q! c- [
(2)get(主键):(id一般为主键)
1 k1 V, D% a+ r" m0 m4 RUser.query.get(1)2 A: o# |1 `" ]$ ~1 a! d
<User u'st'>. b- s. x* l6 I" }- S! L5 I# ^
(3)filter查询(模糊查询):
0 m- ~ W! O$ r" h. J) SUser.query.filer(User.username.endswith('t')).all()
7 W& v: [0 X* \( p3 \; j7 G% m- h[<User u'st'>]% ~- H$ o, }% I* k4 S B2 w% ?5 j
3 ]9 T( E" K; i2 _4 K5 }! d
(4)逻辑非查询:1 X e; |' x# j7 K% o' G R; l
user = User.query.filter(User.username != 'st').first(). ~8 y% N9 e5 Q4 j& C
print user b [$ u, U0 Z3 r- P
<User u'stt'> W: N0 t) t- v. t l- M4 T9 c" y
或9 q: u3 Y" h; \
from sqlalchemy import not_
9 R m/ _' p+ V' g, q; T0 Vuser = User.query.filter(not_(User.username == 'st')).first()
4 K: g# }7 _" Qprint user
# Y7 k. O/ t1 R3 s2 x! w5 H+ c# y1 b
<User u'stt'>( E: o" U# L8 n! S- a: K
* g C6 P% j5 G' ?+ I0 k$ A# c
(5)逻辑与) v0 q" \7 ]% F; j" h, X2 L1 m
from sqlalchemy import and_
! g) V/ Z8 Z# X( Juser = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()) z0 {5 J- l" h% A
4 \5 W( B+ J; D! s" l/ Xprint user) i9 {' v/ C( i% e9 A6 @
1 k# b7 M* h0 T5 w. U<User u'stt'>
5 b! v5 v+ e8 M2 v$ x% Q, ](6)逻辑或
1 i: _& ]6 L e7 ~ Mfrom sqlalchemy import or_! |( A; O5 W4 k# ?
user = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()
$ M& A5 x: F. W( [( H" t3 n) L, g" e2 W* `* a; H1 v5 Z( c8 Q
9 u" {$ c- }* m$ `4 W4 K& [: Q c
print user
, o0 c% k7 @) x9 Q- l
4 Y* N6 I. x, z; Y<User u'stt'>
6 f+ k4 O# P5 D1 U1 C' a6 q2 [(7)first()返回查询到的第一个对象
3 ^- P* ^/ z2 }) w5 huser = User.query.first()5 [% ~6 G3 b# w- f* }# r' x
print user: I- @0 P! q! B5 [/ q0 k+ y
% B/ _9 Z+ a8 M/ F4 K* {# q7 H
<User u'st'>
k0 R- i- w0 U
+ L3 U1 q$ a; O) I4 O(8)all()返回查询到的所有对象9 A9 I9 W) V2 a
user = User.query.first()
- Z. g) d7 T( K) _print user
8 \8 _( T9 l0 k, T. m
& t+ w. p* {1 R& g/ i5、删除数据
3 n- v. `/ N% S1 j$ Y5 `3 Fuser = User.query.first()
6 o7 K0 E' H/ Z3 Fdb.session.delete(user)
" S9 d4 o$ |3 B' s z. p& Sdb.session.commit()5 A2 p' N8 b/ n$ M. r
User.query.all()( {! [: c5 t5 k9 }4 {) r) h
[<User u'stt'>]
7 m* A+ O# g- z* o5 h
4 ], ^/ B4 I, d" N6、更新数据
% E6 n9 u' O: U: {1 luser = User.query.first()& l$ m" F9 S, h6 j
user.username = 'ballking'
+ s2 Q: R# h$ z3 \) M: nUser.query.first()% }# J, Q( A0 o& [- L1 s$ a
<User u'ballking'>2 j! F1 H8 H% x' p* v
/ T- R. [5 c5 K
- m# P" O8 u% k* L. C) b
" ]) ]# q9 E& Y9 T |
|