Слишком много подключений к базе данных SQLite с использованием sqlalchemy, из-за чего Python-скрипты не работают - PullRequest
0 голосов
/ 30 сентября 2019

В моем скрипте Python я использую sqlachemy для подключения к базе данных sqlite. Многие сценарии потерпели неудачу с сообщением об ошибке

cursor.execute(statement, parameters)
sqlite3.OperationalError: disk I/O error

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) disk I/O error
...
[SQL: SELECT headline, body, NYTime, subjects, country, pid, ric, mic, ticker       FROM news       WHERE            sector LIKE '%Energy%'       AND            ticker LIKE  (?)       AND            NYTime BETWEEN (?) AND (?)]
[parameters: ('%CRC%', datetime.date(2006, 4, 16), datetime.date(2006, 4, 19))]
(Background on this error at: http://sqlalche.me/e/e3q8)

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

Редактировать: я пытаюсь прочитать из базы данных. Мой код выглядит следующим образом

db_dir = 'database_directory'
engine = create_engine("sqlite:///" + db_dir + "database_name.db")
sql = "SELECT headline, body, NYTime, subjects, country, ticker\
       FROM news\
       WHERE\
            sector LIKE '%Energy%'\
       AND\
            ticker LIKE  (?)\
       AND\
            NYTime BETWEEN (?) AND (?)"
for i in np.arange(len(df_2006_health)):
    event_date = df_2006_health.Date.iloc[i]
    sta_date = event_date - timedelta(days=1)
    end_date = event_date + timedelta(days=2)
    symbol = '%' + df_2006_health.Symbols.iloc[i] + '%'
    if i == 0:
        df = pd.read_sql_query(sql, engine, params=(symbol,
                                                    sta_date, end_date))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...