回答編集履歴

2

Add expression

2020/07/13 05:46

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -69,3 +69,27 @@
69
69
  con = get_db
70
70
 
71
71
  ```
72
+
73
+
74
+
75
+ この書き方は関数を実行せず、
76
+
77
+ 関数自体を変数に代入する記法です
78
+
79
+
80
+
81
+ 関数 `get_db` は、
82
+
83
+ 実行するとデータベースコネクションのオブジェクトを返すようなので、
84
+
85
+ 関数 `get_db` 自体を変数 `con` 代入するのではなく、
86
+
87
+ 関数 `get_db` を実行して、返り値を変数 `con` に代入します
88
+
89
+
90
+
91
+ ```python
92
+
93
+ con = get_db()
94
+
95
+ ```

1

Add expression

2020/07/13 05:46

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -19,3 +19,53 @@
19
19
  con = get_db()
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ ## 原因の特定方法
26
+
27
+
28
+
29
+ ```console
30
+
31
+ File "/Users/Desktop/flask_init_sample/models.py", line 40, in insert
32
+
33
+ cur = con.cursor()
34
+
35
+ AttributeError: 'function' object has no attribute 'cursor'
36
+
37
+ ```
38
+
39
+
40
+
41
+ このエラーの内容は、
42
+
43
+ 「`con.cursor()` を実行しようとしていますが、
44
+
45
+ `function` (関数型) のオブジェクトに `cursor` という要素はありませんよ」
46
+
47
+ という指摘です
48
+
49
+
50
+
51
+ つまり、`con` が関数型になっています
52
+
53
+ これはプログラムした意図と異なっていることでしょう
54
+
55
+ `con` はデータベースコネクションのオブジェクトになるつもりで
56
+
57
+ プログラミングしたはずですね
58
+
59
+
60
+
61
+ `con` を作成した箇所を探してプログラムを遡っていくと、
62
+
63
+ 次の箇所が見つかります:
64
+
65
+
66
+
67
+ ```python
68
+
69
+ con = get_db
70
+
71
+ ```