相关疑难解决方法(0)

使用python获取Windows 7中可用的odbc驱动程序列表

我试图在python中编写一个通用的数据库连接器类.为此,我想首先检查机器上安装的驱动程序,如果机器中缺少所需的驱动程序,则抛出错误.

有没有办法在python中执行此操作?

python windows odbc

6
推荐指数
2
解决办法
6766
查看次数

如何使用包含 @ 的密码的 SQLAlchemy create_engine()

这有效:

db = pyodbc.connect('driver={SQL Server Native Client 11.0}; server=172.30.0.194; database=db;uid=someuser; pwd=fancy@password')
Run Code Online (Sandbox Code Playgroud)

这不

cn_string = "mssql+pyodbc://someuser:"fancy&password"@172.30.0.194/db?driver=SQL+Server+Native+Client+11.0"
return create_engine(cn_string)
Run Code Online (Sandbox Code Playgroud)

这也不:

driver = "SQL Server Native Client 11.0"
server = "192.30.0.194"
database = "EPM_Dashboard"
uid = "someuser"
pwd = "fancy@password"
params = f'DRIVER={{{driver}}};SERVER={server};DATABASE={database};UID={uid};PWD={{{pwd}}};'

connection_string = 'mssql+pyodbc:///?odbc_connect=%s' % urllib.parse.quote_plus(params)

return create_engine(connection_string)
Run Code Online (Sandbox Code Playgroud)

我得到类似的东西:

登录超时已过期(0);[08001] [Microsoft][SQL Server Native Client 11.0]与 SQL Server 建立连接时发生网络相关或实例特定的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。(53)

如果 pyodbc 项目失败,这会更可信。

这是另一个失败:

return create_engine(urllib.parse.quote_plus('driver={SQL Server Native Client 11.0}; server=172.30.0.194; database=EPM_Dashboard;uid=someuser; pwd=fancy@password'))
    
Run Code Online (Sandbox Code Playgroud)

我确信我在某个地方缺少了一个棘手的角色。

这是一些资源

https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases

SQL密码中的特殊字符 …

sql-server sqlalchemy python-3.x

5
推荐指数
1
解决办法
7306
查看次数

pyodbc 到 sqlalchemy 连接

我正在尝试将 pyodbc 连接切换到 sqlalchemy。工作的 pyodbc 连接是:

import pyodbc
con = 'DRIVER={ODBC Driver 11 for SQL Server};SERVER=server.com\pro;DATABASE=DBase;Trusted_Connection=yes'
cnxn = pyodbc.connect(con)
cursor = cnxn.cursor()
query = "Select * from table"
cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)

我试过:

from sqlalchemy import create_engine
dns = 'mssql+pyodbc://server.com\pro/DBase?driver=SQL+Server'
engine = create_engine(dns)
engine.execute('Select * from table').fetchall()
Run Code Online (Sandbox Code Playgroud)

基于: http: //docs.sqlalchemy.org/en/latest/core/engines.html

并且:使用 SQLAlchemy 时 pandas.read_sql() 比 pyodbc 慢得多

(尝试使用 Trusted_Connection = Yes 建立连接)

但我收到消息:

操作错误:(pyodbc.OperationalError) ('08001','[08001] [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]不存在 SQL Server 服务,无法访问。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).(53)') (此错误的背景位于: http: …

python sqlalchemy pyodbc pandas pandas-to-sql

3
推荐指数
1
解决办法
1万
查看次数

使用 Windows 身份验证在 Python 中使用 SQL Alchemy 连接到网络上的 MS SQL

我正在尝试使用 pandas.read_sql_table 从 MS SQL Server 获取数据(服务器在网络上)。我使用 Windows 身份验证来访问服务器。Pandas read_sql_table 将 SQL Alchemy 连接作为“连接”的参数。我很难找到一个结合了以下内容的示例:

  1. SQL 炼金术
  2. 微软 SQL 服务器
  3. DSN(根据 SQL Alchemy 的“首选”规范)
  4. Windows 身份验证

我咨询了 SQL Alchemy,它显示了一个使用 SQL 身份验证的示例,但没有使用 Windows 身份验证。http://docs.sqlalchemy.org/en/latest/dialects/mssql.html#connecting-to-pyodbc 以下是我尝试过的各种选项。都返回错误。

import pandas as pd
from sqlalchemy import create_engine
import pyodbc
# set some variables
dbname = 'mydbname'
schemaname = 'myschemaname'
servername = 'myservername'
tablename = ‘mytablename’

sqlcon = create_engine('mssql+pyodbc://@' + servername)
#sqlcon = create_engine('mssql+pyodbc://' + servername + '/' + dbname)
#sqlcon = create_engine('mssql+pyodbc://' + servername)
#sqlcon …
Run Code Online (Sandbox Code Playgroud)

python sql-server sqlalchemy pyodbc

0
推荐指数
1
解决办法
5570
查看次数