易陆发现互联网技术论坛

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

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

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

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

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

x
Traceback (most recent call last):
4 a; A4 o5 N+ \2 q: G9 {  File "<input>", line 1, in <module>
9 O8 B- o7 [9 yImportError: cannot import name 'db' from 'app' (C:\Users\xxxx\pythonProject\venv\lib\site-packages\app\__init__.py); a$ |4 m* s# d
  j# M, [$ v. i+ Q+ A
2 L  b1 B) I" E: F7 R7 b; S
遇到问题,我一直没有想过问题在哪里,为什么引入不了这个db
" e9 \# D* k, d" ?. k* a3 E& d在python console上执行时一直报错,但视频里却能正常,为什么?+ Z; r$ I9 ]3 P) K
>>>from app import db
1 F& |: G4 j. D- STraceback (most recent call last):
& O3 F5 X2 o" j* T; I; s  File "<input>", line 1, in <module>4 }- j2 W& F! e9 g- D
ImportError: cannot import name 'db' from 'app' (C:\Users\xxxxx\pythonProject\venv\lib\site-packages\app\__init__.py)
$ z% r4 v! g# Z0 Y9 ]3 q
1 B( F/ p& _/ j) c; F$ ]* O1 g3 T解决问题原因:. k3 u! F7 ?0 k9 v- k
一次偶然的问题,一直测试,发现一个问题。我们的xxxx.py 这个flask文件的问题。
1 Y4 d" O9 b* e9 }6 r  E* D" c我们取名叫什么,就用前面的名称  比如app.py就用app  完整的输入就是from app import db8 Q: n1 Y1 i' u, n/ L. p- Q

7 `% w7 ~. n- L5 @3 l3 ]但我这里的文件名称是appflask.py  那么我们这边就要在执行的时候,输入from appflask import db. {0 e: Y, J) G# p8 _) e

5 `9 j- v: x' O5 h7 z9 J+ |8 q, b$ T>>>from appflask import db: |6 D1 y, g; G- }6 E: N
C:\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.
( m( Z$ V% U* \9 W  warnings.warn(FSADeprecationWarning(
! S, a9 O: X  S) U; q6 v$ n
+ e8 ~. U/ K  o' X* I8 {8 e即可执行后面的db.create_all()等命令了。; b( B! B9 e2 N3 x( z$ Y
 楼主| 发表于 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
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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