易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 37|回复: 1
收起左侧

调试数据库与环境问题 在pychm上调试代码出现错误from app import db ImportError: cannot import name 'db

[复制链接]
发表于 2024-7-30 02:00:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
Traceback (most recent call last):
) `# u8 z) v0 m1 n  File "<input>", line 1, in <module>
, S8 L; f2 |1 r; ~ImportError: cannot import name 'db' from 'app' (C:\Users\xxxx\pythonProject\venv\lib\site-packages\app\__init__.py)
) N0 l4 V2 e& R& }4 W" b# q4 r  N
0 G8 N" G7 e: R% Y& d2 g+ v# ?! d  r; l! o
遇到问题,我一直没有想过问题在哪里,为什么引入不了这个db
; q+ p$ U+ X* }4 X1 X4 v! |在python console上执行时一直报错,但视频里却能正常,为什么?
' _6 Y0 c2 u& [" M>>>from app import db3 C4 L* n, c$ A) X. ~: }, d
Traceback (most recent call last):
8 d1 C0 g7 U% b% L) b6 Q  File "<input>", line 1, in <module>( n' G7 [! O9 H! I$ @
ImportError: cannot import name 'db' from 'app' (C:\Users\xxxxx\pythonProject\venv\lib\site-packages\app\__init__.py)
1 J$ d  E& Y: X/ @0 {7 `# @" |
解决问题原因:9 f8 \+ B* U$ u7 L+ G, P
一次偶然的问题,一直测试,发现一个问题。我们的xxxx.py 这个flask文件的问题。
$ F/ P. Q1 L5 B! G& C( B' I% R我们取名叫什么,就用前面的名称  比如app.py就用app  完整的输入就是from app import db
: X; I+ ?0 }7 L; b" S0 n8 |0 ~% |! t4 Q+ B' y8 q/ i
但我这里的文件名称是appflask.py  那么我们这边就要在执行的时候,输入from appflask import db
- `& g& f, G+ K# U
# r& p9 |2 ^8 d% W>>>from appflask import db
# M- v! }5 b8 c3 G. U$ AC:\Users\xxxxx\venv\lib\site-packages\flask_sqlalchemy\__init__.py:834: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.0 g# l3 |, V7 y
  warnings.warn(FSADeprecationWarning(
  }3 I/ j7 v) [, z/ H1 d
. p1 R' L5 i! b$ V# n即可执行后面的db.create_all()等命令了。0 t. p1 {3 Y( [7 J1 ^" X
 楼主| 发表于 2024-7-30 08:13:28 | 显示全部楼层
上面的测试结果。来自一个调试的步骤。1 o1 I6 q3 h3 A9 q# O' ^
  先将上边儿的代码保存到桌面,并命名为hello.py,然后,我们就在数据python shell中来完成相应的操作吧。9 O, L( k% M& |% y) C6 b. ^" T" _
1
; t* o6 m5 J* f0 D首先打开cmd执行命令:
" a# j9 y; r# |) _+ d+ N; E0 [0 T1 ?- X/ u* K
python C:\Users\st\Desktop\hello.py shell
& k. c1 B4 ?2 D0 J( B& Z$ f* P5 O- \9 n* l; `  a4 U3 F
打开如下的python shell环境:
% g5 p% {, w, mhello.py shell
5 Q, G4 J  I. o' F8 }- v
2 o" C& O: n; o+ I6 P接下来,我们就来看看如何操作MySQL数据库:
/ L( ^  U  Z9 e) J0 R' f在操作之前先将flask-sqlalchemy的类实例导入:(在上边儿的代码中,我们已经将sqlalchemy的类实例为db,所以我们执行以下操作将其导入:4 t, w$ o: K) p+ \
from hello import db
" c! ^( R* e5 Q- T1 ~. u1 K
0 Z& R+ u2 E/ ?3 p
2 K0 b. ?) [* ]" T) y# ?1、创建表
; [3 V6 X  S4 F# c9 i: v6 C8 @7 Y1 o9 Fdb.create_all()
! D$ |. Q/ x5 x; N: ?, g2、删除表
4 E, M$ q2 H" f* Hdb.drop_all()
5 x- }9 w) t# v: }3 M2 p. ^- H+ d. @. v. E) j9 i
; M3 ?0 L3 G, g
3、插入数据
& ?5 `; g5 E5 ^3 p& r8 b: `from hello import User
' O! @/ I+ @. g& u- yu = User(username='st',email='st@example.com', passowrd='xxxx')8 c% k2 q! K3 I+ b8 l1 R* a, r# l
db.session.add(u)/ `" o8 H9 h( G& \4 e) x
db.session.commit()
0 O- s( k* s' a' e! l" h& R6 y4 W
" l5 U" d  K& ^4、查询数据: X& y1 i" M6 s$ G
(1)filter_by查询(精确查询):
2 x& M- R: Z# \6 g& N5 x0 x’user= User.query.filter_by(username='st').first(). n6 t& \" Z  g  [% F
- O3 r% q9 I; D- \
& Y& @+ @, E: o# C; x: s/ M$ d3 S
print user
4 x6 O. M2 K4 v) r1 T4 m/ \<User u'st'>
, _' M, v" T. K0 P9 K(2)get(主键):(id一般为主键)4 I+ V: E! `. ?2 F
User.query.get(1)( F, W. f* q5 B4 a/ ~$ \
<User u'st'>
2 z* ^& F4 D. C6 q' ^9 V* Y(3)filter查询(模糊查询):
) u0 b5 D  c, ^7 F7 i# n- o7 ?User.query.filer(User.username.endswith('t')).all()
% n! h  X0 `9 ~& _9 k7 H+ x[<User u'st'>]- T5 l$ U5 b7 U5 W: J6 d
1 x! y) z" q+ N/ x; w" i! i. R8 V
(4)逻辑非查询:* n! w3 I  p, D4 I  m
user = User.query.filter(User.username != 'st').first()  W" Y  `+ v9 _
print user5 B- x  b. V* [/ h* \2 h  L
<User u'stt'>
$ V2 [6 R6 I! M, P4 [
% f% C1 q* g- t2 cfrom sqlalchemy import not_' r+ ?( J) F5 T
user = User.query.filter(not_(User.username == 'st')).first()
6 K! i' ]' R/ {2 Zprint user
  e6 I1 M8 c+ y; l8 N6 N% X3 k3 W) Z
<User u'stt'>8 z5 l) w+ f4 O# N% j; q" N* t, J
6 S; Z) }- ~% J
(5)逻辑与: w. F* p7 o  e$ H' r7 P9 L
from sqlalchemy import and_8 R" c$ v5 @0 S
user = User.query.filter(and_(User.username =='stt', User.email.endswith('@example.com'))).first()1 N( m; h% _6 F. ^

, `% v1 Y2 c% f, H2 oprint user7 F' Z/ h9 J) _; O. c" d7 b5 x

0 W* n5 z- o- a& {$ {+ H<User u'stt'>, s  J# N! x3 R2 L% x$ H' c% K
(6)逻辑或
6 C! m; ?# I, R8 Z0 t" {; i% f0 efrom sqlalchemy import or_$ X% k$ X$ h$ L$ _& z$ g' _
user = User.query.filter(or_(User.username !='stt', User.email.endswith('@example.com'))).first()
) D+ n, t- G( A/ K" x
4 G5 ?- `& j) v7 U5 I; T# Z; w0 i* A
print user
# V7 I; n- g& T5 _+ f( ^7 V% ^) a6 ?
<User u'stt'>
& @, P- x) A4 P3 |# Y1 o: h) I(7)first()返回查询到的第一个对象
4 g( q9 G8 N/ ?  p. Juser = User.query.first()
3 n/ V. r  ^" K' T3 g" t  x! y2 }print user) W, Q. ~" D, X% W  g4 Q. u# m
2 o$ @: H5 `& r' A
<User u'st'>' Q0 E* o4 z& l  O9 I# q# |1 _3 u

5 Z5 d/ D: i- s0 Z(8)all()返回查询到的所有对象
7 f$ C+ y/ _' i' R1 H; Juser = User.query.first()
" |; l- A  X2 Z  I, yprint user
: ^# K: u/ a- e5 i  @; d5 s$ K( v% k, X4 t. A& T
5、删除数据" Y, D$ H9 U4 }6 s- H/ b4 u9 y6 M
user  = User.query.first()
& t0 g6 ]( Z$ f8 O  c" h+ B. A0 odb.session.delete(user)  _! u7 V# A5 L5 ?( Q1 J/ `
db.session.commit()
! F( U! |) Y6 d  ?: i  V! vUser.query.all()
  L) I6 k$ h2 @2 V[<User u'stt'>]
6 u; x7 h2 d2 g, r$ V+ Y* e! Y- n1 s2 Z6 A+ N( J1 q
6、更新数据
& n5 U# _0 q2 ]* K$ j: J, Tuser = User.query.first()& _$ ]' F' P  I4 `
user.username = 'ballking'! F7 ?4 @+ v& ^2 E) F/ {
User.query.first()/ P3 r% }0 I  k' g" R6 d; q+ P
<User u'ballking'>
  [' D, I0 i8 J3 N" f* S+ n# Z6 y. ?' f5 D% j3 N
8 G- _( r! ]9 A: |$ `! T8 e
' v' H; L' G. Y2 g4 F# j7 ^4 W! U  Q
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 20:17 , Processed in 0.048462 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表