Подключите / сохраните базу данных sqlite3 в указанном каталоге, отличном от каталога по умолчанию - "conn = sqlite3.connect ('name_of_database')" - PullRequest
0 голосов
/ 20 октября 2018

Я работаю с базой данных Sqlite3 и пытаюсь получить доступ к ее данным из другого каталога, чем он был изначально создан.

Скрипт python (тестовый пример), который я запускал через IDE автоматизации Squish GUI, находится в каталоге

C: \ Squish_Automation_Functional_nVP2 \ suite_Production_Checklist \ tst_dashboard_functional_setup

Iсоздайте базу данных со следующей таблицей внутри этого же скрипта:

def get_var_value_pass():
    conn = sqlite3.connect('test_result.db')
    c = conn.cursor()
    c.execute('CREATE TABLE IF NOT EXISTS test_result_pass (pass TEXT,result INTEGER)')    
    c.execute("INSERT INTO test_result_pass VALUES('Pass', 0)")
    conn.commit()  
    c.execute("SELECT * FROM test_result_pass WHERE pass='Pass'", )       
    pass_result = c.fetchone() 
    test.log(str(pass_result[1])) 
    test_result = pass_result[1] 
    c.close()
    conn.close()       
    return test_result

Теперь я хотел бы получить доступ к той же базе данных, которую я создал ранее, с помощью "conn = sqlite3.connect ('test_result.db') "внутри другого контрольного примера, который находится в другом каталоге

C: \ Squish_Automation_Functional_nVP2 \ suite_Production_Checklist \ tst_Calling_In-Call-Options_Text_Share-Text_Update-Real-Time

Проблема заключается в том, когдаЯ пытаюсь использовать оператор select для той же базы данных - внутри другого скрипта (тестового примера), например так:

def get_var_value_pass(pass_value):
    conn = sqlite3.connect('test_result.db')
    c = conn.cursor()
    c.execute("SELECT * FROM test_result_pass WHERE pass='Pass'", )  

Мой тест не пройден, как только я попробую оператор c.execute (""), потому чтостол не может быть найден.Вместо этого самый последний "conn = sqlite3.connect ('test_result.db')" только что создал новую пустую базу данных вместо ссылки на мою исходную созданную базу данных.Поэтому я пришел к выводу, что я хочу попытаться сохранить свою исходную базу данных, где оба тестовых примера могут использовать их как test_suite_resource - в основном в другом каталоге, где другие тестовые примеры будут иметь ссылку.В идеале здесь:

C: \ Squish_Automation_Functional_nVP2 \ suite_Production_Checklist

Существует ли функция sqlite3, позволяющая вам указать место, где вы хотите подключить / сохранить базу данных?Похоже на sqlite3.connect ('test_result.db') за исключением того, что вы определяете его путь?

Кстати - я попробовал второй фрагмент кода внутри того же тестового скрипта, и он отлично работает.Я также попробовал подход в памяти с помощью sqlite3.connect (': memory:') - все еще не повезло.Пожалуйста помоги!Спасибо.

1 Ответ

0 голосов
/ 21 октября 2018

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

import sqlite3

conn = sqlite3.connect(r'C:\Television\programs.sqlite')
conn.close()
print('Hello')

conn = sqlite3.connect('C:\\Television\\programs.sqlite')
conn.close()
print('Hello')

conn = sqlite3.connect('C:/Television/programs.sqlite')
conn.close()
print('Hello')

Все три попытки подключения завершаются успешно.Я вижу три Hellos в качестве вывода.

  1. Вставьте 'r' перед строкой.См. Документы о строке по этой причине.
  2. Замените каждый ход назад парой ходов назад.
  3. Замените каждый ход назад движением вперед.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...