Conéctese al servidor SQLite3 usando PyODBC, Python
Estoy tratando de probar una clase que carga datos de un servidor SQL dado una consulta. Para hacer esto, me dieron instrucciones de usarsqlite3
. Ahora, el problema es que mientras la clase se las arregla para conectarse a la base de datos real con facilidad, estoy luchando por conectarme con lo temporalsqlite3
servidor que creo, ya que no puedo entender cómo debería ser la cadena de conexión. Estoy usandopyodbc
en la clase para conectarse con bases de datos. Entonces, ¿alguien tiene una idea de cómo debería ser la cadena de conexión?
La clase tiene el siguiente aspecto:
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)
Y lo temporalsqlite3
el servidor es el siguiente
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!')")
Entonces, lo que deseo ingresar es algo como
tester = Loader('connection_string_goes_here')
tester.loadFromSQL("SELECT * FROM test_table")
EDITAR
Bien, he recorrido un poco la web y descubrí que una posible cadena de conexión es"DRIVER={SQL Server};SERVER=localhost;DATABASE=test.db;Trusted_connection=yes"
. Sin embargo, la conexión agota el tiempo de espera después de un tiempo y devuelve el siguiente mensaje de error:
pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect)')
Lo cual me pareció extraño, ya que es local y no he especificado ninguna contraseña. También he intentado especificar el nombre exacto de la ruta en vano.
Mejor,
Víctor