как вставить значения в конкретную таблицу на основе пользовательских решений - PullRequest
0 голосов
/ 03 мая 2018

Я работаю над небольшим проектом, в котором мне нужно вставить значение в разные таблицы на основе Slave Id, например, если пользователь отправляет несколько значений с идентификатором ведомого 1, мне нужно вставить значение в таблицу «Instant_Values_S1», а если идентификатором подчиненного 2, мне нужно вставить значение в «Instant_Values_S2» это мой код:

c.execute("INSERT INTO Instant_Values_S1 VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
                          (
                              1,
                              utctime,
                              data[0],
                              data[1],
                              data[2],
                              data[3],
                              data[4],
                              data[5],
                              data[6],
                              data[7],
                              data[8],
                              data[9],
                              data[10],
                              data[11],
                              data[12],
                              data[13],
                              data[14],

                          ))
                conn.commit()
                conn.close()

здесь я снова и снова определяю имя таблицы, но вместо этого я хочу дать это автоматически? кто-нибудь может мне помочь!

Спасибо

1 Ответ

0 голосов
/ 03 мая 2018

AFAIK, это известное ограничение SQL: вы можете использовать параметры для значений, но не для имен таблиц или столбцов. Но команда SQL - это просто строка, и вы можете использовать Python для построения статической части запроса. Более или менее:

table_names = [None, "Instant_Values_S1", "Instant_Values_S2" ]
# will raise exception if slave_id is not 1 or 2
req = "INSERT INTO " + table_names[slave_id] + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
c.execute(req, (slave_id, ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...