Я пытаюсь сделать SELECT value of column_2 from the sqlite3 TABLE table_name WHERE, column_3 value is 'Waiting'
.скрипт python для чтения базы данных sqlite3 не работает
Я хочу передать имена столбцов, table_name и значение проверки условия как переменные.
Я написал сценарий, подобный этому, с классом, но он не работает.
#!/usr/bin/python
import sys
import os
import sqlite3
import re
class Read_class(object):
def __init__(self,db_name,table_name,status,column_to_read,column_state):
self.db_name = db_name
self.table_name = table_name
self.status = status
self.column_to_read = column_to_read
self.column_state = column_state
def read_waiting(self):
db_name = self.db_name
column_2 = self.column_to_read
table_name = self.table_name
column_3 = self.status
print column_3
column_state = self.column_state
print column_state
conn = sqlite3.connect(db_name)
print "Opened database successfully";
c = conn.cursor()
c.execute("SELECT ({coi}) FROM {tn} WHERE {cn} = {cs}".\
format(coi=column_2, tn=table_name, cn=column_3,cs=column_state))
conn.commit()
row = c.fetchall()
print row
return row
C = Read_class('test.db', 'Test_Task', 'status', 'Task_ID','Waiting')
task_id = C.read_waiting()
Я получаю следующее сообщение об ошибке:
[email protected]:~/auto/scripts$ python class.py
status
Waiting
Opened database successfully
Traceback (most recent call last):
File "class.py", line 70, in <module>
task_id = C.read_waiting()
File "class.py", line 26, in read_waiting
format(coi=column_2, tn=table_name, cn=column_3,cs=column_state))
sqlite3.OperationalError: no such column: Waiting.
My sqlite3 db schema and data stored on the db is as follows:
CREATE TABLE Test_Task
(User_Name TEXT NOT NULL,
User_Email varchar(20),
Image_Name varchar(30),
UGW_Tag varchar(20),
WAN_Mode varchar(10),
Test_Type varchar(20),
Sub_Type varchar(20),
Task_ID INT NOT NULL,
status varchar(20));
данные, хранящиеся на БД:
sqlite> SELECT * from Test_Task;
nagesh|[email protected]|20161020134234_CSX5000.tar|Ubuntu16.04xenial|WAN|SANITY|xxxxxi|1|Running
ramesh|[email protected]|123_wan.tar|12ertf|LAN|FULL|aqbc|2|Waiting
vishal|[email protected]|20161020135030_CSX5000.tar|Ubuntu16.04xenial|WAN|SANITY|xxxxxi|3|Running
ramesh|[email protected]|123_wan.tar|12ertf|LAN|FULL|aqbc|4|Waiting
Пожалуйста, подсказывают, как можно достичь этого.
Какой запрос именно вы хотите запустить? – Harsha
Я пытаюсь выполнить следующие команды, используя скрипт python: sqlite> SELECT Task_ID из Test_Task WHERE status = 'Waiting'; sqlite> Где я пытаюсь передать Task_ID, Test_Task, статус и Ожидание как переменные. –
Здесь также должен быть приведен пример базы данных – Yugi