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

楼主 |
发表于 2024-7-30 08:13:28
|
显示全部楼层
上面的测试结果。来自一个调试的步骤。: ?" j" z# N! a9 s9 F* f3 r" [
先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。2 L7 X; G0 T7 {
1/ Z. S3 ?" I/ [0 G3 `) c U3 {
首先打开cmd执行命令:* s5 t X# G' M6 }* w1 `2 O
# k z7 x2 t" e q( |
python C:\Users\st\Desktop\hello.py shell
' w0 H3 X" i) W6 }* \4 k( n3 e5 C: A& M5 i r
打开如下的python shell环境:# b& d" b, S( U. J4 g0 t7 R2 ` [
hello.py shell
0 `0 J+ S- _* i D$ Q6 M; N; f/ a% z. y
接下来,我们就来看看如何操作MySQL数据库:
4 ^0 O. v: E8 u }7 ~" F+ M在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:6 u; k/ \, l: o4 R- ?* p) ^
from hello import db) N5 e8 U, w+ p
/ v! y" b' Q) z4 {2 _2 r( s( Q! f! ^6 i% D' h# f! @. m/ e
1、创建表3 r& T) \8 c* t/ z
db.create_all()6 ^& {8 Y% x0 [: E2 L& P
2、删除表& I+ _& w; t$ F" [$ ^8 }: m
db.drop_all()# W/ e x* T- X7 b
- i# `3 e/ F) t7 A w
& {" ]8 X& L! n0 L, E( e3、插入数据* b6 @- G8 n0 P6 }
from hello import User1 j4 v6 v8 x! W: g
u = User(username='st',email='st@example.com', passowrd='xxxx')% Y2 y) P2 C, v" Z! u& ]
db.session.add(u)1 q# }! `+ {- ?$ D$ s4 W% c. n1 r6 h' z
db.session.commit()2 s1 O! f$ {8 c2 D0 s
* R. c, F4 h* f0 u1 d4、查询数据6 U: r" B5 }" W4 j n) v& f% ^" p
(1)filter_by查询(精确查询):1 p7 b4 |5 A: Y2 M. B* H0 W& c
’user= User.query.filter_by(username='st').first()0 W6 I3 w# E A) q( m
/ @1 e) X/ D0 |" ]% P" ~. J# W5 H% T; S! w" E, m
print user
+ x) x5 a2 ?9 _8 r- G7 p<User u'st'>
' G$ c, z+ [# R, { Q1 u) S8 y+ C& ?+ [(2)get(主键):(id一般为主键)
/ U) t" L j D# X# tUser.query.get(1)1 u) G& r- j4 Y) x2 [- l
<User u'st'>
! ?0 i( T( y& u3 {: `3 \(3)filter查询(模糊查询):
( q1 q* C X) `5 rUser.query.filer(User.username.endswith('t')).all()
1 s, L% G9 V6 Q O& `; z7 u D$ C[<User u'st'>]; q' L( i8 ]6 e# z5 q2 s) z" }. m! b
2 o$ d' ^* W3 s. Z# _(4)逻辑非查询:4 h7 T# [; B. M
user = User.query.filter(User.username != 'st').first()
- J4 m e& k/ x' H5 w' b3 dprint user Y' d _" w. \! t* Q# u
<User u'stt'>
4 U% y6 [2 ]9 |$ y6 H或
) A: O9 C' J$ W" g. `1 Z; Gfrom sqlalchemy import not_
3 _; C9 g2 C. O; R/ k/ muser = User.query.filter(not_(User.username == 'st')).first()" t" ], M! P% N" R! {' J7 k1 W
print user* A+ g! J9 t6 W/ Z3 I* N/ o2 `
/ G$ F- F( J9 x) ]" C5 N' J) [
<User u'stt'>
[ N( V/ O7 u* y) \* K' K1 f3 D# |' K W, J
(5)逻辑与
q/ z6 ?0 {$ {. Bfrom sqlalchemy import and_9 D( P. h% s! Y4 s; L1 Z, y: @
user = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()4 \: q# j' X. z0 D; [; k
+ M* U1 X. j) C4 k
print user6 f3 D, w& Q8 ?( C) t* K6 t1 x
* I4 A3 ~' O# J. t+ a<User u'stt'>$ [1 b9 q5 D/ j# J
(6)逻辑或; b' M8 m8 E7 j/ ^/ H3 a3 W
from sqlalchemy import or_$ W1 Y* `1 U$ |& M- [! Z; }8 l$ i
user = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()" R+ ~3 S1 r2 \ Z
! \' h' `+ {% i' ~' I- O, {
" a: v8 Y1 F4 m4 }$ M4 s7 wprint user; T v) p; e# \
& T' Y1 L! F+ V- l/ \! \# [
<User u'stt'>* P, V l- I; {1 |1 ^$ M% T" A2 q
(7)first()返回查询到的第一个对象$ D v4 r P+ P. s0 x! r
user = User.query.first()3 N% Y+ T: A2 e
print user y: o, ?, S5 E! F' a
% l4 ?! r9 N9 t8 { d$ r5 Q<User u'st'>
, o! q' r3 z: N' l
! t$ }$ a- T! {' r- ^(8)all()返回查询到的所有对象
# ] J& s$ y1 x; E% E8 v) a" z# ]user = User.query.first()6 q: [$ j( y3 m1 X8 }& E, Q
print user
' r: d6 |; l' g2 A+ E, ]9 K0 V& q" m0 S" n( G; b' ^
5、删除数据7 B* {* K% a6 n( t
user = User.query.first()* A6 e. e2 s1 r3 V: X. {
db.session.delete(user)
! [( ?# O+ k: { I: v- [db.session.commit()2 T8 h( s) L6 o6 ~
User.query.all()7 {: ~: Z: s6 Q6 \. M; ^
[<User u'stt'>]/ F$ ^7 Q" _ c; c
# Q; E! n) G! ~
6、更新数据) c* g9 i; d5 K" `2 \$ D. \
user = User.query.first()+ v0 T8 T; |; \
user.username = 'ballking'
# N2 { r) R8 {1 e8 i$ R, w8 t" GUser.query.first()0 z' O, ~8 n" P4 I) M8 B
<User u'ballking'>5 F7 s7 S3 L8 Y' D7 V: _8 E5 x+ f
( V( S: J. [7 s* h2 \
8 c/ T4 e0 x% ]6 b" h5 ~7 Z! l. L1 `+ W! @3 C$ w
|
|