社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

正在将Microsoft SQL Server中的数据读取到Python中[重复]

Rdmican • 5 年前 • 1895 次点击  

我正试图通过python连接到sql,以便在microsoft sql server上的一些sql数据库上运行一些查询。从我在网上和这个论坛上的研究来看,最有前途的图书馆似乎是pyodbc。所以我做了以下代码

import pyodbc
conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; 
database=+MSQLDatabase+; trusted_connection=true")
cursor = conn.cursor()

并得到以下错误

Traceback (most recent call last):
  File "C:\Users...\scrap.py", line 3, in <module>
    conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true")
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

我看了下面的帖子,并尝试将驱动程序更改为{sql server},并且之前在sas中使用odbc链接进行了连接,这部分是我上面的代码所基于的,因此不需要安装其他任何东西。

pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')

Pyodbc - "Data source name not found, and no default driver specified"

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48237
 
1895 次点击  
文章 [ 8 ]  |  最新文章 5 年前
mondieki
Reply   •   1 楼
mondieki    8 年前

另一种方法是 installing Microsoft ODBC驱动程序13,然后替换 SQLOLEDB 具有 ODBC Driver 13 for SQL Server

当做。

LCJ
Reply   •   2 楼
LCJ    6 年前

下面的python代码对我有效。为了检查ODBC连接,我首先创建了一个4行C控制台应用程序,如下所示。

python代码

import pandas as pd
import pyodbc 
cnxn = pyodbc.connect("Driver={SQL Server};Server=serverName;UID=UserName;PWD=Password;Database=RCO_DW;")
df = pd.read_sql_query('select TOP 10 * from dbo.Table WHERE Patient_Key > 1000', cnxn)
df.head()

调用存储过程

 dfProcResult = pd.read_sql_query('exec dbo.usp_GetPatientProfile ?', cnxn, params=['MyParam'] )

检查ODBC连接的C程序

    static void Main(string[] args)
    {
        string connectionString = "Driver={SQL Server};Server=serverName;UID=UserName;PWD=Password;Database=RCO_DW;";
        OdbcConnection cn = new OdbcConnection(connectionString);
        cn.Open();
        cn.Close();
    }
Alfred Huang
Reply   •   3 楼
Alfred Huang    6 年前

尝试使用PytDS,它比整个更复杂的环境工作。 pyodbc 更容易安装。

我在Ubuntu18.04上成功了

裁判: https://github.com/denisenkom/pytds

文档中的示例代码:

import pytds
with pytds.connect('server', 'database', 'user', 'password') as conn:
    with conn.cursor() as cur:
        cur.execute("select 1")
        cur.fetchall()
Andrew
Reply   •   4 楼
Andrew    6 年前

这是一些新手的照片。

enter image description here

Franco
Reply   •   5 楼
Franco    7 年前

我喜欢这样…那就容易多了

http://www.pymssql.org/en/stable/pymssql_examples.html

conn = pymssql.connect("192.168.10.198", "odoo", "secret", "EFACTURA")
cursor = conn.cursor()
cursor.execute('SELECT * FROM usuario')
Community Benjamin Gruenbaum
Reply   •   6 楼
Community Benjamin Gruenbaum    7 年前

在客户端和服务器之间的数据源连接中,通常有两种类型:使用驱动程序的ODBC和使用提供程序的OLEDB。在编程界,它是 regular debate 连接到数据源时要走哪条路。

你在使用提供者, SQLOLEDB ,但将其指定为驱动程序。据我所知,pyodbc和pypyodbc模块都不支持window oledb连接。然而, adodbapi 是否使用Microsoft ADO作为基础组件。

下面是连接参数的两种方法。还有,我 string format 作为连接的变量没有在字符串中正确打断引号。你会注意到我把花括号翻了一番,因为它是连接字符串和 string.format() 也使用它。

# PROVIDER
import adodbapi
conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source={0};Database={1}; \
       trusted_connection=yes;UID={2};PWD={3};".format(ServerName,MSQLDatabase,username,password))
cursor = conn.cursor()

# DRIVER
import pyodbc
conn = pyodbc.connect("DRIVER={{SQL Server}};SERVER={0}; database={1}; \
       trusted_connection=yes;UID={2};PWD={3}".format(ServerName,MSQLDatabase,username,password))
cursor = conn.cursor()
Keith
Reply   •   7 楼
Keith    8 年前

对之前所说的话稍加补充。您可能想要返回一个数据帧。这将作为

import pypyodbc 
import pandas as pd

cnxn = pypyodbc.connect("Driver={SQL Server Native Client 11.0};"
                        "Server=server_name;"
                        "Database=db_name;"
                        "uid=User;pwd=password")
df = pd.read_sql_query('select * from table', cnxn)
Asher
Reply   •   8 楼
Asher    5 年前

我就是这样做的…

import pyodbc 
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server=server_name;"
                      "Database=db_name;"
                      "Trusted_Connection=yes;")


cursor = cnxn.cursor()
cursor.execute('SELECT * FROM Table')

for row in cursor:
    print('row = %r' % (row,))

相关资源: