Форум программистов, компьютерный форум, киберфорум
Python: Flask
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
43 / 7 / 0
Регистрация: 27.11.2013
Сообщений: 96

Flask и две БД

10.03.2015, 01:04. Показов 1139. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форумчане, помогите.
Для ознакомления написал связку SQL + Elasticsearch обернутое во Flask. Хочу сделать функцию поиска в ES через формы таким образом:
Пользователь пишет, что он хочет найти по описанию товара, например. ES поиск выполняет, выплевывает id документа, и этот id закидывает в SQL и вот уже пользователю эта позиция из SQL и показывается.
Буду рад, если подскажете как переписать получше

p.s. В основном вопрос в областях видимости, потому что я не могу понять когда надо создавать объект классов

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
__author__ = 'Bogdan'
from flask import Flask, render_template, redirect
import sqlite3
from elasticsearch import Elasticsearch
app = Flask(__name__)
 
class ES(object):
    def __init__(self):
        self.es = Elasticsearch()
        self.id = 0
 
    def insert_es(self, id, good, description):
        doc = {
            'id': id,
            'good': good,
            'description': description
            }
        res = self.es.index(index="test-index", doc_type='description_goods', id=self.id, body=doc)
        print(res['created'])
        res = self.es.get(index="test-index", doc_type='description_goods', id=self.id)
        print(res['_source'])
        self.es.indices.refresh(index="test-index")
        self.id += 1
 
    def search_es(self, what, query):
        res = self.es.search(index="test-index", body={"query": {"match": {what: query}}})  #"author": 'kimchy'
        print("Got %d Hits" % res['hits']['total'])
        documents = []
        for hit in res['hits']['hits']:
            print hit
            documents.append(hit['_source'])
        return documents
 
    def del_by_query(self, query):
        res = self.es.delete_by_query(index="test-index", body={"query": {"match": {query}}}) #{"match_all": {}}
 
    def del_all(self):
        res = self.es.delete_by_query(index="test-index", body={"query": {"match_all": {}}}) #{"match_all": {}}
 
 
class SQL(object):
    def __init__(self, test_db):
        self.connection = sqlite3.connect(test_db)
        self.cursor = self.connection.cursor()
        self.table = 'CREATE TABLE goods(id INTEGER, NAME TEXT, WEIGHT INTEGER, NUM INTEGER)'
        self.cursor.execute(self.table)
        #closed method
        #self.__data
 
    def insert(self, id, good, weight, num):
        query = 'INSERT into goods VALUES ({}, "{}", {}, {})'.format(id, good, weight, num)
        self.cursor.execute(query)
        self.connection.commit()
 
    def search_sql(self, query):
        self.cursor.execute(query)
        return self.cursor.fetchall()
 
 
es = ES()
sql = SQL(':memory:')
 
#sql.insert(1, "Chair", 15, 33)
#sql.insert(10, "Table", 20, 17)
#print sql.search_sql('SELECT * FROM goods WHERE id=1')
 
 
@app.route('/')
def index(): return render_template('index.html')
 
@app.route('/insert')
def fill_in_dbs():
    es = ES() #я понимаю что объект здесь - глупо, но по-другому не работает
    es.insert_es(1, "Chair", "big")
    es.insert_es(2, "Table", 15)
    es.insert_es(3, "TV", 5)
    es.insert_es(8, "Bed", 15)
    es.insert_es(10, "Chair", 10)
 
    sql = SQL(':memory:')
    sql.insert(1, "Chair", 15, 33)
    sql.insert(10, "Table", 20, 17)
    return redirect('/search_form')
 
 
def execute_query(q):
    query = 'SELECT * FROM goods WHERE id={}'.format(q)
    f = sql.search_sql(query)
    return f
 
@app.route('/search_form')
def flask_search():
    if request.args:
        for k, v in request.args.items():
            if v:
                scores = es.search_es(k, v)
                for d in scores:
                    for key, value in d.items():
                        if key == 'id':
                            print key, value, type(value)
                            #print execute_query(value)
                            #return redirect('search_sql.html', f=f)
    return render_template('form.html')
 
@app.route('/delete_all_es')
def delete_all_es():
    es.del_all()
    return render_template('delete.html')
 
if __name__ == '__main__':
    app.run(debug=True)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2015, 01:04
Ответы с готовыми решениями:

Прием json-объекта | Flask, Flask-Security, Telegram-bot
Здравствуйте, помогите , пожалуйста, Flask знаю не очень, но что-то смог, писал бота с бд и админкой, на вебхуке, но после того, как...

Подключить PostgreSQL к Flask API и передавать данные таблицы в flask
Нужна срочная и большая помощь, надеюсь только на вас. Есть Python+QT5 (PYQT5) приложение. В таблицу приложения (QTableWidget)...

Flask так сказать изучаю "мега туториал flask" строка "from app import app"
Объясните что всё это означает? Почему app подчеркнуто красным? В чём ошибка?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2015, 01:04
Помогаю со студенческими работами здесь

Один ПК, две сетевухи, две сетки, две папки для общего доступа
Здравствуйте! В одном здании имеем две разделенные физически локальные сети. Есть возможность использовать на одном ПК две сетевухи....

Мультироутинг в Flask
Добрый вечер. Написал небольшой блог с выводом постов на главную. Теперь хочу для каждого поста отдельную страницу с комментариями. ...

Flask-SQLAlchemy One to Many
Есть 2 модели: class Citizen(db.Model): import_id = db.Column(db.Integer, db.ForeignKey("import.import_id"), primary_key=True) ...

Проблема с Flask
Добрый вечер! Я решил попробовать создать несколько веб-страниц при помощи Flask, но при переходе на страницу у меня возникает ошибка: Not...

Python Flask
Всем привет! Т.к. я новичок в Flask, не получаются элементарные вещи Хочу сделать, чтоб по нажатию на радиобатон, на странице появлялось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru