2015-07-01 2 views
3

Я пытаюсь проверить класс, который загружает данные с SQL-сервера с учетом запроса. Для этого мне было поручено использовать sqlite3. Теперь проблема заключается в том, что, хотя классу удается легко подключиться к реальной базе данных, я изо всех сил пытаюсь подключиться к временному серверу sqlite3, который я создаю, так как не могу понять, как должна выглядеть строка подключения. Я использую pyodbc в классе для подключения к базам данных. Итак, есть ли у кого-нибудь идея о том, как должна выглядеть строка подключения?Подключиться к серверу SQLite3 с помощью PyODBC, Python

Класс выглядит следующим образом:

import petl as etl 
import pyodbc 
class Loader: 
    """ 
    This is a class from which one can load data from an SQL server. 
    """ 

    def __init__(self, connection_string): 
     """ 
     This is the initialization file, and it requires the connection_string. 

     :param connection_string: 
     :type connection_string: str 
     :return: 
     """ 

     self.connection = pyodbc.connect(connection_string) 

    def loadFromSQL(self, query): 
     """ 
     This function loads the data according to the query passed in query. 

     :param query: 
     :type query: str 
     """ 

     self.originalTableETL = etl.fromdb(self.connection, query) 

     self.originalTablePD = etl.todataframe(self.originalTableETL) 

И временный sqlite3 сервер следующим образом

import sqlite3 as lite 
con = lite.connect('test.db') 
with con: 
    cur = con.cursor() 
    cur.execute("DROP TABLE IF EXISTS test_table") 
    cur.execute("CREATE TABLE test_table(col1 TEXT, col2 TEXT)") 
    cur.execute("INSERT INTO test_table VALUES('Hello', 'world!')") 

Итак, что я хочу, чтобы ввести что-то вроде

tester = Loader('connection_string_goes_here') 
tester.loadFromSQL("SELECT * FROM test_table") 

EDIT

Хорошо, я немного проверил сеть и обнаружил, что возможная строка подключения - "DRIVER={SQL Server};SERVER=localhost;DATABASE=test.db;Trusted_connection=yes". Тем не менее, время соединения из через некоторое время и возвращает следующее сообщение об ошибке:

pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect)') 

который я нашел странным, как это местная и я не указал пароль. Я также попытался указать точное имя пути безрезультатно.

Бест,

Виктор

+0

Можете ли вы разместить более подробную информацию о сервере sqlite, который вы создали? И существующий код, который у вас есть до сих пор? Также можно найти многочисленные примеры того, как выглядят строки: https: //code.google.com/p/pyodbc/wiki/GettingStarted – AZhao

+0

Конечно, я отредактирую! – Tingiskhan

+0

Какой из многих драйверов ODBC SQLite вы используете? –

ответ

7

Решена проблема! Скачивали драйвер ОДХБ для sqlite3 от http://www.ch-werner.de/sqliteodbc/, и определил строку соединения, такие как

"DRIVER={SQLite3 ODBC Driver};SERVER=localhost;DATABASE=test.db;Trusted_connection=yes" 

И это сработало, надеюсь, что это помогает людям!

Смежные вопросы