2015-10-13 3 views
1

Я хочу создать REST API, используя колбу python. Так что в любое время я делаю это:flask-restful: как анализировать параметры при подключении к SQL-серверу db?

локальными/клиентов cust_country = США

Я хочу получать каждую строку из где всех таблиц "клиентов от США.

Это сценарий, Я до сих пор:

from flask import Flask, request 
from flask_restful import Resource, Api 
from sqlalchemy import create_engine 
from flask_restful import reqparse 

e = create_engine("mssql+pyodbc://....") 

app = Flask(__name__) 
api = Api(app) 

parser = reqparse.RequestParser() 
parser.add_argument('cust_country', type = 'string') 

class Dep(Resource): 
    def get(self): 
     conn = e.connect() 
     args = parser.parse_args() 
     query = conn.execute("select * from customers where cust_country = ?", [args['cust_country']]) 
     print(query) 
     return {'custid': [i[0] for i in query.cursor.fetchall()]} 

api.add_resource(Dep, '/customers') 

if __name__ == '__main__': 
    app.run() 

Я получаю эту ошибку:

C:\Users\x>curl 127.0.0.1:5000/customers?cust_country=USA 404 Not Found

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

=============== =======

часть 2: отправка нескольких параметров:

from flask import Flask 
from flask_restful import Resource, Api 
from flask_restful import reqparse 
from sqlalchemy import create_engine 


e = create_engine("x") 

parser = reqparse.RequestParser() 
parser.add_argument('cust_country', type = str) 
parser.add_argument('cust_name', type = str) 

app = Flask(__name__) 
api = Api(app) 

class Dep(Resource): 
    def get(self): 
     args = parser.parse_args() 
     conn = e.connect() 
     query = conn.execute("select cust_id from customers where cust_country = ? and cust_name = ?", [args['cust_country'], args['cust_name']]) 
     return {'custid': [i[0] for i in query.cursor.fetchall()]} 

api.add_resource(Dep, '/customers') 

if __name__ == '__main__': 
    app.run() 

это то, что я использую в моей завитка:

curl "127.0.0.1:5000/customers?cust_country=USA&cust_name=Wascals"

ответ

2

Одна ошибка, которую вы можете быть облицовкой с помощью parser.add_argument('cust_country', type = 'string'), что неправильно.

Это должно быть parser.add_argument('cust_country', type = str).

Также я бы предложил использовать app.run(debug=True), так как он поможет вам отладить простые ошибки.

+0

Я изменил его тип = ул но я все еще получаю ту же ошибку, когда я делаю это: Curl 127.0.0.1:5000/customers -d «cust_country = США» – 90abyss

+0

'-d«cust_country = США» 'не будет работать, поскольку вы только написали конечную точку для запроса' get'. Попробуйте использовать этот фрагмент кода для тестирования https://gist.github.com/yashmehrotra/207cb1a58a4653c75cb8 С помощью команды 'Curl«127.0.0.1:5000/customers?cust_country=USA»' –

+0

получать этот вывод : {"hello": "USA"} – 90abyss

 Смежные вопросы

  • Нет связанных вопросов^_^