|
|
楼主 |
发表于 2024-7-30 08:13:28
|
显示全部楼层
上面的测试结果。来自一个调试的步骤。
/ A! |9 l( o/ Y. F3 t 先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。
9 B0 h1 L6 M7 q4 g0 c1: U4 M$ ~* C$ ]) o7 [' J$ S
首先打开cmd执行命令:1 ? S0 Q# v6 |% \- x6 ~3 N' y% ~
+ K1 o& I d2 I( i Tpython C:\Users\st\Desktop\hello.py shell @. g; Z: R ^4 d8 l! X
0 I2 U2 G2 u2 D/ d
打开如下的python shell环境:4 r5 x [0 [6 |, z% x; }" y& `
hello.py shell$ _6 b6 u0 {- w0 \$ }1 }% @
) X; P$ I# N7 q接下来,我们就来看看如何操作MySQL数据库:
$ Y6 h. g% F$ _" O0 R( X) R& n# ~1 J在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:+ P/ L2 y5 ^& i
from hello import db: E6 Y: s1 e: B8 m2 W
# ]& a$ {8 s5 o! V) r$ a1 [ J/ H$ e2 y
2 B; E, Y2 c$ H6 Y: r I% \
1、创建表
6 ~$ [0 G- |: ~& H( q, R% sdb.create_all()0 U7 k* y3 c* ^+ f6 \& H
2、删除表
1 Y% e% j8 Y. ]$ O! G0 bdb.drop_all()# o: D, \+ {+ w
7 _/ a$ d0 V ^1 R) d
1 T- _# K6 G6 W9 i& x1 D P3、插入数据% {: r* @4 N6 C, @ _, G2 N
from hello import User
( J$ U1 j Z! Lu = User(username='st',email='st@example.com', passowrd='xxxx')6 b6 G: b) _. Z4 }/ A
db.session.add(u)' G" G' T) p" w6 Z$ y
db.session.commit()
+ Z0 Z4 P7 t% Y4 C$ \$ `8 a l5 U- B* B% N5 m
4、查询数据3 d2 I9 x1 V) N# t
(1)filter_by查询(精确查询):
* Q/ ^! i7 Y% X4 h’user= User.query.filter_by(username='st').first()- G% m8 Q+ I" b
0 |4 I0 R) w% W3 F5 C8 |- L
3 H ?2 _9 E) z; Lprint user$ U5 K- `( N U) |! y, r- Y
<User u'st'>
3 k4 q. J4 B* T1 U(2)get(主键):(id一般为主键)
7 T5 c# J. ~8 XUser.query.get(1)" |9 O8 T8 ]2 J1 J+ M8 Z* @9 _
<User u'st'>7 j5 b% y7 N2 ~" H# L. ]7 o
(3)filter查询(模糊查询):$ Y& @2 }3 _: g. ?
User.query.filer(User.username.endswith('t')).all()
4 j6 {; D r D/ e4 s& Q m[<User u'st'>]
9 m# {9 G! q0 Z
9 ]2 P& [- t# x0 } L(4)逻辑非查询:
8 T/ M0 G q$ }: L( Kuser = User.query.filter(User.username != 'st').first()0 _+ P+ {: g1 o( T6 y
print user, }: q5 w1 k/ s% W1 @ Q J/ Z; T
<User u'stt'>* Z. y( j9 R4 l3 W8 I
或: P u4 o& y- I. d H p
from sqlalchemy import not_
/ _' m& g/ { Q" I* luser = User.query.filter(not_(User.username == 'st')).first()* g8 u, a8 g" R- p7 c2 g5 ^, G
print user6 i) e: b1 o+ U/ f
0 L+ e3 X' z! Y7 j) L3 s
<User u'stt'>
5 v3 k! L# A& q4 N1 I: O, n
$ v4 p5 A+ {, B% R% s; m4 ^(5)逻辑与
6 u8 b# W/ {2 E* W/ o) @5 Cfrom sqlalchemy import and_1 F- ?" q" I( y$ N. E1 e' ]
user = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()
3 ^! ?/ f3 }+ L% w. W2 k9 o
! ]1 W$ T+ d+ I# R7 N7 v, `; Vprint user G) E7 {$ F7 [/ W
0 G, X5 @- X, x P4 t<User u'stt'>6 w7 N+ q. V( t
(6)逻辑或
; ^, m) [, k- Q$ j+ ~from sqlalchemy import or_
/ ~' ^* M* [2 B0 T8 Zuser = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()
( X. S4 t, k. E) G4 o, x/ W9 p- S {# s- z3 V, K) T
/ v7 p9 \* z/ L7 ~, k, t6 a5 Q/ Wprint user
5 @) w: K+ S! {4 T8 ]" E. t6 ?/ ~+ C2 J% Q+ D& C
<User u'stt'>/ B1 y9 F2 }- a4 i3 j2 |
(7)first()返回查询到的第一个对象3 t6 U/ {$ R" M$ o. v- ^
user = User.query.first()( j! ` x) w I0 `0 I" V8 V
print user
8 ?4 F# E: i0 M" B x1 u3 O, V" n4 A
<User u'st'>
; \$ Y7 k7 G) g M: e9 [8 H3 [) i9 B! T. I" [- K
(8)all()返回查询到的所有对象( ?2 U, {2 a' F/ a1 P
user = User.query.first()
- p$ A& W" x+ b) }1 C) q9 ~5 Jprint user
4 R5 A9 b6 ]' o; }% c* p1 w) {: O9 S
5、删除数据8 `, z" ?% X; W0 v# Q( u
user = User.query.first()
8 q3 K& V0 [( G# K6 O0 tdb.session.delete(user)& M' z1 j% V/ F! D; i: N# O) A
db.session.commit()
, j' P# Y( o" K4 z# L, dUser.query.all()
3 L) y; e7 O7 G. X" U[<User u'stt'>]- F! t/ ]7 {5 h- R' [. e& F7 E1 F% A
3 v+ ]6 t" p/ {2 [. ~, R- G
6、更新数据
" A; X x0 Y+ o5 R; E3 Ruser = User.query.first()( I& N4 f( x( i) T8 m$ y: v
user.username = 'ballking'" J' `& H8 t( c7 `+ _
User.query.first() z: c/ \0 z6 d6 T( s# Z0 m
<User u'ballking'>: ~, n% ^" K" d+ B6 m# z' {
, D" X5 D! o5 e" ^/ Q1 K
+ d" @0 \* D+ K0 a9 t
: |% F4 ^' C4 `# u$ |
|
|