在我的烧瓶应用程序(Flask 0.12.2,Python 3.6.2)中,我想从MySQL数据库中选择行。 这是我的导入:
from flask import Flask, jsonify
from flaskext.mysql import MySQL
和一些初始化:
app = Flask(__name__)
app.config['MYSQL_DATABASE_PORT'] = 3306
app.config['MYSQL_DATABASE_USER'] = '...'
app.config['MYSQL_DATABASE_PASSWORD'] = '...'
app.config['MYSQL_DATABASE_DB'] = '...'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql = MySQL()
mysql.init_app(app)
con = mysql.connect()
顺便说一下,我的桌子就像:
==============================
id |名字|年龄
1 | “约翰”| 20
==============================
所以现在我要编写一个以“column_name”和“id”作为参数的函数:
@app.route('/test/<device_id>/<column_name>', methods=['GET'])
def test(column_name, device_id):
sql = "SELECT %s FROM `table` WHERE `id` = %s"
cursor = con.cursor()
result_row = cursor.execute(sql, (column_name, device_id))
query_result = cursor.fetchall()
cursor.close()
return jsonify({'result': query_result})
如果我要求 / test / 1 / name ,我希望如此 我会得到一个JSON对象:
{"result": ["John"]}
但是,我有列名而不是列数据:
{"result": ["name"]}
我想知道我是否在sql中出错了,所以我使用了一个新的SQL:
sql = "SELECT `name` FROM `table` WHERE `id` = 1"
result_row = cursor.execute(sql)
这次它适用于这个纯粹的sql,但它失去了接收参数的能力。
所以我想知道我之前的代码片段中的sql有什么问题?或者我可能搞乱了execute()方法?
答案 0 :(得分:0)
你得到结果“name”,因为正在运行的sql是:
SELECT "name" FROM `table` WHERE `id` = 1
注意“名字”,而不是“名字”
你可以得到你想要的结果:
sql = "SELECT * FROM `table` WHERE `id` = %s"
cursor = con.cursor()
result_row = cursor.execute(sql, (device_id))
query_result = cursor.fetchall()
for row in query_result:
print row[column_name]