将sqlite3数据库连接/存储在默认目录以外的指定目录中-“ conn = sqlite3.connect('name_of_database')”

时间:2018-10-19 22:16:18

标签: python sqlite automated-tests squish

我正在使用Sqlite3数据库,它试图从与最初创建的目录不同的目录访问其数据。

我通过Squish GUI Automation IDE运行的python脚本(测试用例)位于目录

C:\ Squish_Automation_Functional_nVP2 \ suite_Production_Checklist \ tst_dashboard_functional_setup

我在同一脚本中用下表创建数据库:

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 :(得分:1)

我不清楚您是否收到了答案。您有很多选择。我碰巧有一个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. 将每个向后的笔触替换为向前的笔划。