pyqt 使用sqlite
Select
database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('trade.db')
database.open()
query = QSqlQuery()
query.prepare(select_sql)
query.addBindValue(self.getSymbolControl(index))
query.addBindValue(start_date.strftime('%Y-%m-%d %H:%M:%S'))
query.addBindValue(end_date.strftime('%Y-%m-%d %H:%M:%S'))
if not query.exec_():
logging.error(str(query.lastError().text()))
else:
while query.next():
result.append({'high': query.value(0), 'low': query.value(1), 'open': query.value(2), 'close': query.value(3)})
database.close()
Insert
def saveBarsDataToSqliteDb(self, bars, index, min_index):
database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('trade.db')
database.open()
query = QSqlQuery()
if bars is not None:
insert_sql = 'insert into `stock_data`(`date`, `symbol`, `open`, `high`, `low`, `close`) values(?, ?, ?, ?, ?, ?)'
query.prepare(insert_sql)
if len(bars) > 0:
bar = bars[0]
current_date = datetime.datetime.now()
bar_save_date = bar.date + datetime.timedelta(minutes=1)
if current_date.minute != bar_save_date.minute:
logging.info('error data try to get next data:' + self.getSymbolControl(index))
if len(bars) > 1:
bar = bars[1]
bar_save_date = bar.date + datetime.timedelta(minutes=1)
query.addBindValue(bar_save_date.strftime('%Y-%m-%d %H:%M:%S'))
query.addBindValue(self.getSymbolControl(index))
query.addBindValue(bar.high)
query.addBindValue(bar.low)
query.addBindValue(bar.open)
query.addBindValue(bar.close)
if not query.exec_():
logging.error(str(query.lastError().text()))
else:
pass
database.close()
return result
Update
def changeSqliteTradeStateAction(self, index, state=0):
database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('../trade.db')
database.open()
query = QSqlQuery()
query.prepare('update trade_list set `trade_or_not` = ? where symbol = ?')
query.addBindValue(state)
query.addBindValue(self.getSymbolControl(index).text())
if not query.exec_():
print(str(query.lastError().text()))
else:
print('update')
database.close()
Delete
def saveToSqliteDb(self):
database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('trade.db')
database.open()
query = QSqlQuery()
delete_sql = 'delete from trade_list where 1'
query.prepare(delete_sql)
if not query.exec_():
logging.error(query.lastError().text())
else:
logging.info('delete records')