Получите данные из пользовательского интерфейса и сгенерируйте запрос Mysql из mysql, используя Flask - PullRequest
2 голосов
/ 17 января 2020

I имеет 2 таблицы в базе данных.

Orders таблица:

OrderID     CustomerID  EmployeeID  OrderDate   
-----------------------------------------------
10308         2           1         1996-09-18  
10309        37           3         1996-09-19  
10310        77           6         1996-09-20  

Customers таблица:

CustomerID  CustomerName Country
--------------------------------- 
    1       Alfreds      Germany
    2       Ana          Mexico
    3       Antoni       Mexico

Мой пользовательский интерфейс:

  • Вы можете выбрать первую таблицу (заказы) From orders there is a drop-down to select columns
  • Вы можете выбрать первую таблицу (клиент) From Customers there is a drop-down to select columns
  • Средняя прокрутка вниз Вы можете выбрать тип соединения (внутреннее, внешнее, левое, правое)

Я могу получить имена таблиц и значения столбцов из пользовательского интерфейса, ниже приведено требование, которое мне нужно для динамического отображения (ответа) сгенерированный mysql запрос?

MySql пример запроса:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID; 

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Вот код python, который вы можете использовать:

@app.route('/generating_customized_query/', methods=['POST'])
def get_generating_customized_query():

    details = {}
    details['orders_table_column'] = flask.request.json['orders_table_column']
    details['customers_table_column'] = flask.request.json['customers_table_column']
    details['join'] = flask.request.json['join']

    base_sql = """
       SELECT Orders.%(orders_table_column)s, Customers.%(customers_table_column)s 
       FROM Orders 
       %(join)s JOIN Customers 
       ON Orders.%(customers_table_column)s = Customers.%(customers_table_column)s 
    """

    data = [dict(k) for k in db.session.execute((base_sql) % details).fetchall()]
    return flask.jsonify(data=data)

Переменные, которые мы используем:

`orders_table_column` = Column which we are fetching from `Orders` Table
`customers_table_column` = Column which we are fetching from `Customers` Table
`join` = Join which we are using in the base query
2 голосов
/ 19 января 2020

Я не правильно понимаю ваш Куинтон. но я думаю, что эта помощь для вас

CREATE PROCEDURE `test`(IN tab_name VARCHAR(40),IN _CustomerID INT)
BEGIN
SET @t1 =CONCAT("SELECT * FROM ",tab_name," where  CustomerID=", _CustomerID);
 PREPARE stm FROM @t1;
 EXECUTE stm;
 DEALLOCATE PREPARE stm;
END

вы можете назвать это

CALL test('Orders',2);
CALL test('Customers',2);
...