質問するログイン新規登録

回答編集履歴

2

Add expression

2020/07/13 05:46

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -33,4 +33,16 @@
33
33
 
34
34
  ```python
35
35
  con = get_db
36
+ ```
37
+
38
+ この書き方は関数を実行せず、
39
+ 関数自体を変数に代入する記法です
40
+
41
+ 関数 `get_db` は、
42
+ 実行するとデータベースコネクションのオブジェクトを返すようなので、
43
+ 関数 `get_db` 自体を変数 `con` 代入するのではなく、
44
+ 関数 `get_db` を実行して、返り値を変数 `con` に代入します
45
+
46
+ ```python
47
+ con = get_db()
36
48
  ```

1

Add expression

2020/07/13 05:46

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -8,4 +8,29 @@
8
8
 
9
9
  ```python
10
10
  con = get_db()
11
+ ```
12
+
13
+ ## 原因の特定方法
14
+
15
+ ```console
16
+ File "/Users/Desktop/flask_init_sample/models.py", line 40, in insert
17
+ cur = con.cursor()
18
+ AttributeError: 'function' object has no attribute 'cursor'
19
+ ```
20
+
21
+ このエラーの内容は、
22
+ 「`con.cursor()` を実行しようとしていますが、
23
+ `function` (関数型) のオブジェクトに `cursor` という要素はありませんよ」
24
+ という指摘です
25
+
26
+ つまり、`con` が関数型になっています
27
+ これはプログラムした意図と異なっていることでしょう
28
+ `con` はデータベースコネクションのオブジェクトになるつもりで
29
+ プログラミングしたはずですね
30
+
31
+ `con` を作成した箇所を探してプログラムを遡っていくと、
32
+ 次の箇所が見つかります:
33
+
34
+ ```python
35
+ con = get_db
11
36
  ```