Я использую sqlite для организации данных, извлекаемых с помощью скрипта скребка, но у меня возникают проблемы с выполнением команды «вставить в».
Я делаю скребок для сайта электроники, как новичок в Python-энтузиасте.У меня уже был работающий скрипт, который бы очищал все страницы до тех пор, пока я не решил изменить код, чтобы создать новый столбец с ценами и назвать этот столбец, используя сегодняшнюю дату.Теперь по какой-то причине команда SQL, которая вставляет данные в таблицу, отказывается выполняться с новым столбцом, который я добавляю.
Попытка добавления нового столбца в команду SQL с помощью?Метод и .format () метод безуспешно.Перепробовал все виды 'мест вокруг? S и {} s.
Это код:
class Product:
def __init__(self, prodId, title, price=None):
self.prodId = prodId
self.title = title
self.price = price
self.currDatePriceCloumnName = date + 'Price'
def insertToTable(self):
self.addColumn()
conn = sqlite3.connect(databaseName)
c = conn.cursor()
c.execute("insert into {} (?,?,?) values (?,?,?)".format(table),('Product_ID','Title',str(self.currDatePriceCloumnName),str(self.prodId),str(self.title),str(self.price)))
conn.commit()
conn.close()
def addColumn(self):
conn = sqlite3.connect(databaseName)
c = conn.cursor()
try:
c.execute("alter table {} add column '?'".format(table),(str(self.currDatePriceCloumnName),))
conn.commit()
conn.close()
except:
pass
я ожидал, что c.execute
в insertToTable
, чтобы вставитьданные в таблицу, но я получаю следующую ошибку:
File "/home/sergio/Desktop/test/scraper.py", line 67, in insertToTable
c.execute("insert into {} (?,?,?) values (?,?,?)".format(table),('Product_ID','Title',str(self.currDatePriceCloumnName),str(self.prodId),str(self.title),str(self.price)))
sqlite3.OperationalError: near "?": syntax error
Странно то, что столбец создан, но не заполнен.Когда я использовал метод .format()
, у ошибки было нужное имя столбца вместо?, Это говорит мне, что проблема может быть связана с тем фактом, что я использую self.currDatePriceCloumnName
, но я застрял отсюда.
Пожалуйста, помогите .. Спасибо заранее!=]