使用PyODBC,Python连接到SQLite3服务器
问题内容:
我正在尝试测试从给定查询从SQL
Server加载数据的类。为此,我被指示使用sqlite3
。现在,问题在于,尽管该类设法轻松地连接到真实数据库sqlite3
,但由于无法弄清连接字符串的外观,我正在努力与自己创建的临时服务器连接。我pyodbc
在课堂上使用数据库连接。那么,有没有人知道连接字符串的外观?
该类如下所示:
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")
编辑
好的,我已经在网络上进行了一些搜索,发现可能的连接字符串为 "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)')
我发现这很奇怪,因为它是本地的,而且我没有指定任何密码。我也尝试指定确切的路径名无济于事。
最好,
胜利者
问题答案:
解决了问题!从http://www.ch-werner.de/sqliteodbc/下载了用于SQLite的ODBC驱动程序,并定义了连接字符串,例如
"DRIVER={SQLite3 ODBC Driver};SERVER=localhost;DATABASE=test.db;Trusted_connection=yes"
它奏效了,希望这对人们有所帮助!