前提・実現したいこと
Pythonは昨日から触り始めたばかりで、初歩的な質問かもしれませんが、よろしくお願いします。
下記のQiitaの記事にしたがってPythonでREST APIを実装しようとしています。
PythonでREST APIをサクっと実装
記事との違いとして、環境が
- Mac OS 10.13.4
- Python 3.6.2
- PostgreSQL 10.4
となっています。
記事ではSQLiteですが、PostgreSQLで実装を行おうとしています。
発生している問題・エラーメッセージ
発生しているエラーは単純にUserクラスが定義されていないという内容です。
>>> user = User.get(User.userId == userId) Traceback (most recent call last): File "<input>", line 1, in <module> NameError: name 'User' is not defined
該当のソースコード
Python
1# -*- coding: utf-8 -*- 2from flask import Flask, jsonify, abort, make_response 3import peewee 4from playhouse.postgres_ext import PostgresqlExtDatabase 5# import json 6 7db = PostgresqlExtDatabase( 8 database='data', 9 user='postgres', 10 password="*******", 11 host="127.0.0.1", 12 port=5432, 13 register_hstore=False) 14 15 16class User(peewee.Model): 17 userId = peewee.TextField() 18 userCompany = peewee.TextField() 19 userDiscountRate = peewee.IntegerField() 20 21 class Meta: 22 database = db 23 24 25api = Flask(__name__) 26 27 28@api.route('/getUser/<string:userId>', methods=['GET']) 29def get_user(userId): 30 try: 31 user = User.get(User.userId == userId) 32 except User.DoesNotExist: 33 abort(404) 34 35 result = { 36 "result": True, 37 "data": { 38 "userId": user.userId, 39 "userCompany": user.userCompany, 40 "userDiscountRate": user.userDiscountRate 41 } 42 } 43 44 return make_response(jsonify(result)) 45 # Unicodeにしたくない場合は↓ 46 # return make_response(json.dumps(result, ensure_ascii=False)) 47 48 49@api.errorhandler(404) 50def not_found(error): 51 return make_response(jsonify({'error': 'Not found'}), 404) 52 53 54if __name__ == '__main__': 55 api.run(host='0.0.0.0', port=3000) 56
試したこと
エラー文で検索すると、基本的にimportされていないことが原因だと書いてありますが、
今回の場合、Userクラスは同ファイル内にあり、importの必要はないと考えています。
エラー自体はとても初歩的なエラーだと思うので、簡単な理由かもしれませんが、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー