0 / 0 / 4
Регистрация: 03.05.2015
Сообщений: 33

Как правильно вытащить из БД значение?

23.05.2017, 21:30. Показов 4649. Ответов 2

Студворк — интернет-сервис помощи студентам
Есть такая вот таблица созданная в BD Browser (SQLite)

В первозданном виде она выглядела вот так

Необходимо было найти P_y по ранее рассчитанным P_p и t. Как я пытался это сделать:
Python
1
2
3
4
5
6
7
8
9
10
11
import sqlite3
conn = sqlite3.connect('database_all.db')
import numpy as np
power_list=np.array([-70,200,300,400,480,520,600]) #нижние границы температурных интервалов
temp=90
number_row=np.searchsorted(power_list, temp, side='right') #находим номер столбца
print(number_row)
dict={ 0:'70-200', 1:'200-300'} #ассоциируем номер столбца с его названием
number_dict=dict[number_row]
cur = conn.cursor()
cur.execute("SELECT ? from P_max_steel_3_2 ",(number_dict))
На что я получил следующую ошибку:

File "C:/Users/lomil/PycharmProjects/Regulator/123.py", line 13, in <module>
cur.execute("SELECT ? from P_max_steel_3_2",(number_dict))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 7 supplied.

Как правильно составить запрос по названию столбца? Или проще будет как-то переделать таблицу?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2017, 21:30
Ответы с готовыми решениями:

Про регулярные выражения, как правильно вытащить значение
Есть у меня данные, так выдает прибор. Мне нужно взятяь одно значение. Вот сам текст Дата : 25/06/2019 11:18:49 ...

Как правильно вытащить данные из БД ?
Есть клиент-серверное приложение + БД. Как клиенту, в данном случае девайсу на android, при появлении записей в одной из таблиц БД...

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

2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.05.2017, 17:01
Таблица о_О
Как я понимаю, входные данные - это давление и температура?

Давайте лучше переделаем БД. Новая структура:
* id - идентификатор
* p_min - давление
* p_max
* t_min - температура
* t_max
* res

Запрос к базе будет выглядеть так:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
  res
FROM
  P_max_steel_3_2
WHERE
  p_min >= ?
AND
  p_max <=?
AND
  t_min >= ?
AND
  t_max <=?
(p,p,t,t)
1
0 / 0 / 4
Регистрация: 03.05.2015
Сообщений: 33
25.05.2017, 23:14  [ТС]
Да, про тот бред что у меня в таблице, я уже понял. Таблицу я переделал:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN TRANSACTION;
CREATE TABLE "P_steel_3_2" (
    `ID`    INTEGER,
    `TEMPERATURE`   REAL,
    `VARIANTS`  REAL
);
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (0,'-70_200','0.1, 0.25, 0.4, 0.6 ,1 ,1.6, 2.5 ,4, 6.4, 10, 16');
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (1,'200-300','0.09, 0.22, 0.36, 0.56, 0.9, 1.4, 2.2, 3.6, 5.6, 9, 14');
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (2,'300-400','0.08, 0.2, 0.32, 0.5, 0.8, 1.25, 2, 3.2, 5, 8, 12.5');
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (3,'400-480','0.07, 0.18, 0.28, 0.45, 0.7, 1.1, 1.8, 2.8, 4.5, 7.1, 10.2');
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (5,'520-600','0.05, 0.11, 0.18, 0.28, 0.45, 0.7, 1.1, 1.8, 2.8, 4.5, 7.1');
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (6,'600-700','0, 0.06, 0.09, 0.15, 0.22, 0.36, 0.56, 0.9, 1.4, 2.2, 3.6');
INSERT INTO `P_steel_3_2` (ID,TEMPERATURE,VARIANTS) VALUES (4,'480-520','0.06, 0.16, 0.25, 0.4, 0.64, 1, 1.6, 2.5, 4, 6.4, 10');
COMMIT;
Ну и решение тоже надо переделать. По странной причине, np.searchorted возвращает int64 значение, а не список. Пока, так, пока не пойму почему:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sqlite3
import numpy as np
 
con = sqlite3.connect('database_all.db')
power_list = np.array([-70, 200, 300, 400, 480, 520, 600])
temperature = 90
number_row = np.searchsorted(power_list, temperature, side='right')-1
number_row = int(number_row)
'''
Крайне странное поведение numpy. Вместо списка, np.searchsorted возвращает int64, который SQL упорно не хочет воспринимать
Пока конвертируем полученное значение в  int, там посмотрим.
'''
cur = con.cursor()
cur.execute("SELECT VARIANTS from P_steel_3_2 WHERE ID=?", (number_row,))
pressure_variants = cur.fetchone()
cur.close()
print(pressure_variants)
Добавлено через 3 часа 36 минут
Доделал:
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
import sqlite3
import numpy as np
import re
con = sqlite3.connect('database_all.db')
power_list = np.array([-70, 200, 300, 400, 480, 520, 600])
temperature = 90
number_row = np.searchsorted(power_list, temperature, side='right') - 1
number_row = int(number_row)
'''
Крайне странное поведение numpy. Вместо списка, np.searchsorted возвращает int64, который SQL упорно не хочет воспринимать
Пока конвертируем полученное значение в  int, там посмотрим.
'''
cur = con.cursor()
cur.execute("SELECT VARIANTS from P_steel_3_2 WHERE ID=?", (number_row,))
pressure_variants = cur.fetchone()
cur.close()
unpacked = (str(pressure_variants))
def prepare_list(pure_list):
    '''
    Убирает лишние символы, разбирает на отдельные элементы и трансформирует из <str> в <float>
    :param pure_list:
    :return: final_list
    '''
    pure_list= pure_list[2:] #убираем ('
    pure_list= pure_list[:-3] # убираем ',)
    pure_list=re.split(' ', pure_list)
    print(pure_list)
    i=0
    final_list=[a*0 for a in range(0, len(pure_list))]
    while i < len(pure_list):
        final_list[i]=float(pure_list[i])
        i +=1
    return final_list
unpacked=prepare_list(unpacked)
pressure_basic=3.6
column_list=np.array(unpacked)
column_number=np.searchsorted(unpacked, pressure_basic, side='right')
pressure_nominal=unpacked[column_number]
Правда я так и не понял, что не так с np.searchsorted.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2017, 23:14
Помогаю со студенческими работами здесь

Как правильно вытащить повторяющиеся данные
SELECT формирует вот такую таблицу https://yadi.sk/i/OunAaPz13NCo9v Уникальные данные хранятся только в поле meta_value (город,...

Как правильно вытащить данные из xml?
Уважаемые форумчане, подскажите, пожалуйста, как правильно вытащить данные из xml? Есть переменная declare @xml xml = ...

Как правильно вытащить exe файл из си шарпа, чтобы он работал на других компьютерах?
Помогите пожалуйста, я создала Информационную систему на си шарпе (с подключением к SQL). Мне нужно, чтобы эта программа работала...

Как вытащить значение
python 2.* Отправил POST запрос. пришел ответ - bal print bal на экране {u'exchange': {u'BTC': u'0.00386807'}} как...

Как вытащить из строки значение?
Есть строка такого вида: подстроки типа &quot;request=3&quot; и &quot;action=11&quot; разделены табуляциями. Как мне получить значение &quot;11&quot;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru