flask-restful:连接到 sql 服务器数据库时如何解析参数?
flask-restful: how to parse parameters when connected to sql server db?
我想使用 python flask 创建一个 REST API。所以每当我这样做时:
localhost/customers?cust_country=美国
我想从 table 'customers' 中提取每一行,每个人都来自美国。
这是我目前的脚本:
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 中使用的内容:
curl "127.0.0.1:5000/customers?cust_country=USA&cust_name=Wascals"
您可能遇到的一个错误是使用
parser.add_argument('cust_country', type = 'string')
这是错误的。
应该是parser.add_argument('cust_country', type = str)
.
另外我建议使用 app.run(debug=True)
因为它会帮助你调试简单的错误。
我想使用 python flask 创建一个 REST API。所以每当我这样做时:
localhost/customers?cust_country=美国
我想从 table 'customers' 中提取每一行,每个人都来自美国。
这是我目前的脚本:
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 中使用的内容:
curl "127.0.0.1:5000/customers?cust_country=USA&cust_name=Wascals"
您可能遇到的一个错误是使用
parser.add_argument('cust_country', type = 'string')
这是错误的。
应该是parser.add_argument('cust_country', type = str)
.
另外我建议使用 app.run(debug=True)
因为它会帮助你调试简单的错误。