|
|
楼主 |
发表于 2024-7-30 08:13:28
|
显示全部楼层
上面的测试结果。来自一个调试的步骤。
$ Y8 b2 ]! u. o$ }2 K- b 先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。7 S! j8 K$ O$ V+ w6 ^) w7 }. V6 s
1! C9 w4 w6 X. l5 k
首先打开cmd执行命令:
7 K& w8 R3 j3 O% x0 M
+ U- t' |, ~7 j e# ipython C:\Users\st\Desktop\hello.py shell
- R" w7 V6 m! {, \- ~
* c8 u1 n9 H1 j1 F8 S打开如下的python shell环境:
# \& N9 ~; L- H C* ihello.py shell1 h. y5 O* m0 f2 O6 _* F0 f
- W7 }+ ^' ?+ o! W% c% k! ^1 x5 r接下来,我们就来看看如何操作MySQL数据库:3 P$ J+ x! Y4 P$ i
在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:' i* e8 `7 X- X, {
from hello import db* M7 A3 \( ]9 X
! \; I# O% ]% B9 t
; b5 R1 e4 O- B( v* ~# [# ~3 |$ i1、创建表8 k) E3 {* s+ i! x3 e' i" U$ t
db.create_all()
- M* C4 V- `3 S0 V5 C( j2、删除表5 ~) y% n5 s" K1 h1 w. |
db.drop_all()3 @4 J/ c! q! f) m' a
) x s% E3 f( z7 b' W& G0 i3 D
# _# c0 L* h9 Z3 X5 m$ X. {2 J3、插入数据
0 y1 ]9 z9 B( m" F" y7 _from hello import User
+ N2 }: u M, w. R" @! ]: xu = User(username='st',email='st@example.com', passowrd='xxxx')
9 p, J/ r# u8 |1 \4 |2 tdb.session.add(u)
% x- N/ h E' X, D; b$ i0 N. V* Ldb.session.commit()0 j* K& Q" u- ~' w8 D I1 p0 j2 |
* g* n% w6 X Y0 P8 q# u# d4 j4、查询数据
6 H: d. L# Y. R(1)filter_by查询(精确查询):3 p0 D7 X. v4 |: e
’user= User.query.filter_by(username='st').first()
" |4 T& [2 }8 `3 b* \ X
% o9 q. v. m0 b* L7 O& ^+ Y0 M& n. {8 e- u9 S2 c
print user
6 `7 i1 c4 Y" \5 Y<User u'st'>" a1 X) [$ `, d t1 _
(2)get(主键):(id一般为主键)
% d7 b$ z0 f& pUser.query.get(1)
8 M- l" r; ]* M) h+ r: n<User u'st'>
2 _% z0 x! K3 C% X5 `0 t' U(3)filter查询(模糊查询):
! M5 R* R# O) x" I: h5 @User.query.filer(User.username.endswith('t')).all()
" m6 ?, L; f2 J% t+ Q% B4 d[<User u'st'>]
w: {+ |: ]* ?& E5 |; U* A" t1 k
(4)逻辑非查询:
# l; ?+ Q: D: P9 x# X" iuser = User.query.filter(User.username != 'st').first()) |/ {9 F- d& J2 a4 `9 t
print user
; R6 G3 L2 n: S: M<User u'stt'># s( q( _4 E& ^8 k, }$ d: p8 _- s
或% Z# p9 x+ v: I
from sqlalchemy import not_7 q/ a/ i3 e2 _: d/ h; u
user = User.query.filter(not_(User.username == 'st')).first()
+ w. ~0 D' P9 s' z Vprint user4 T* h! h! v: B5 k+ e& F/ ?1 B
: z+ |3 f V7 a: @8 s; l( L9 T
<User u'stt'>
5 D- T) Q8 g0 X+ D' a0 M" ^* c% A8 Z( z0 _, \* b9 Y
(5)逻辑与. o% c; }0 Z% F7 L' q
from sqlalchemy import and_
; k* o( Z# K2 z) [7 huser = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()# m' O0 K* b6 R
! u- c) c5 u, v) ^; G9 }print user0 Y' z1 t7 L2 H+ `5 M
( Z& x% d) y1 S! s6 d, ]
<User u'stt'>/ \ k4 J7 B1 `4 C$ N' r
(6)逻辑或
- q7 Z; S$ x6 b1 d0 _4 M$ k$ L2 pfrom sqlalchemy import or_9 P7 Y6 I9 p7 j% u
user = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()
$ S# Z8 r- o+ {2 I% m; P" x/ Y1 x+ ?" d( e* B" u
; j: w- U$ M( d! u
print user
- i7 d5 Y( S/ Q
% Q/ z7 E9 i$ @5 j, Q' h6 j# d<User u'stt'># R( M6 Q- _, t4 s
(7)first()返回查询到的第一个对象9 `: K3 o7 I: A7 g; n
user = User.query.first()4 G9 U" Q: U2 [5 e) m5 x# {' ]
print user7 p+ J% e" z! M8 s8 f& U
9 l2 N- l4 H6 K+ U
<User u'st'>
/ ]& q. ~, M! O9 l' U6 G$ g3 H) q A& d3 O
(8)all()返回查询到的所有对象
9 [* q& V# p1 } r# g u' W7 b5 Cuser = User.query.first()
7 ~3 M! u* H w' H5 A6 Xprint user9 K" j! R( F" p6 B3 T# P
" p/ @. ^, i( H
5、删除数据
3 X' h! p# @, ~& zuser = User.query.first()& @7 j% j5 E7 X T" M! u. U- ` P% d
db.session.delete(user)* ?8 P, E3 z& Z. O, `$ ~3 n y6 E
db.session.commit()8 C) n2 I! e0 ~; x" R# R8 \' i
User.query.all()5 E: Q" M( r9 A* p/ @
[<User u'stt'>]
4 k9 D0 w/ B( @, }2 G5 L0 l% e$ X
) d1 T8 l0 Z( {( a3 Y L6、更新数据
: u2 X) D/ S0 T" E8 B7 x+ |user = User.query.first()
0 r l x6 z, N" y7 O8 C- S* q; Vuser.username = 'ballking'
4 x8 C& G+ B0 z, MUser.query.first()
- x$ ~* g( ^6 x. B$ O: n<User u'ballking'>
+ e- \# z# E8 S& [9 _- z- ^7 x9 J' y: D' ~8 t- K
# k9 ~: Q9 d$ T1 _, _
% a. o0 E) `4 H9 {
|
|