标签: pyodbc

使用pyodbc从SQL检索数据

我试图使用pyodbc从SQL服务器检索数据,并使用Python将其打印在表中.但是,我似乎只能检索列名称和数据类型以及类似的东西,而不是列的每一行中的实际数据值.

基本上我试图复制一个Excel表格,检索服务器数据并将其显示在表格中.我连接到服务器没有任何问题,只是我似乎无法找到进入表中的实际数据.

这是我的代码示例:

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD')
cursor = cnxn.cursor()

cursor.execute("SELECT * FROM sys.tables")
tables = cursor.fetchall()
#cursor.execute("SELECT WORK_ORDER.TYPE,WORK_ORDER.STATUS, WORK_ORDER.BASE_ID, WORK_ORDER.LOT_ID FROM WORK_ORDER")

for row in cursor.columns(table='WORK_ORDER'):
    print row.column_name
    for field in row:
        print field
Run Code Online (Sandbox Code Playgroud)

然而这样做的结果只是给我的东西,如表名,列名,有的整数和"无的之类的东西是不感兴趣的我:

STATUS_EFF_DATE
DATABASE
dbo
WORK_ORDER
STATUS_EFF_DATE
93
datetime
23
16
3
None
0
None
None
9
3
None
80
NO
61
Run Code Online (Sandbox Code Playgroud)

所以我不确定在哪里可以获得填充表格的值.它应该在table ='WORK_ORDER'中,但是它可以在不同的表名下吗?有没有办法打印我刚丢失的数据?

任何建议或意见将不胜感激.

python sql sql-server pyodbc

37
推荐指数
4
解决办法
14万
查看次数

在OSX 10.9(Mavericks)上安装pyodbc失败

跑步的时候pip install pyodbc,我明白了

In file included from .../build/pyodbc/src/buffer.cpp:12:
    .../build/pyodbc/src/pyodbc.h:52:10: fatal error: 'sql.h' file not found
    #include <sql.h>
             ^
    1 error generated.
    error: command 'cc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

似乎Mavericks在/ usr/include下没有sql.h

有没有人设法安装pyodbc?有一个已知的解决方法吗?

python macos pyodbc

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

从pyodbc execute()语句返回列名

from pandas import DataFrame
import pyodbc

cnxn = pyodbc.connect(databasez)
cursor.execute("""SELECT ID, NAME AS Nickname, ADDRESS AS Residence FROM tablez""")
DF = DataFrame(cursor.fetchall())
Run Code Online (Sandbox Code Playgroud)

这可以填充我的pandas DataFrame.但我怎么得到

DF.columns = ['ID', 'Nickname', 'Residence']
Run Code Online (Sandbox Code Playgroud)

直接从光标?该信息是否完全存储在光标中?

python pyodbc pandas

35
推荐指数
4
解决办法
4万
查看次数

无法打开lib'用于SQL Server的ODBC驱动程序13'?Sym链接问题?

当我尝试使用pyodbc(在mac上)连接到sql server数据库时:

import pyodbc

server = '####'
database = '####'
username = '####@####'
password = '#####'
driver='{ODBC Driver 13 for SQL Server}'

pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+password)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:('01000',"[01000] [unixODBC] [驱动程序管理器]无法打开lib'用于SQL Server的ODBC驱动程序13':找不到文件(0)(SQLDriverConnect)")

当我在实际的驱动程序位置路径时:

driver='/usr/local/lib/libmsodbcsql.13.dylib'
Run Code Online (Sandbox Code Playgroud)

它开始工作了!

odbcinst.ini看起来像这样:

[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
Run Code Online (Sandbox Code Playgroud)

如何让我参考driver='{ODBC Driver 13 for SQL Server}'再次开始工作?

我最初使用本指南来安装驱动程序.如果有帮助的话,我在Mac Sierra上使用anaconda?

sql-server odbc pyodbc python-3.x anaconda

35
推荐指数
6
解决办法
5万
查看次数

pyodbc插入到sql中

我使用MS SQL express db.我可以连接和获取数据.但插入数据不起作用:

cursor.execute("insert into [mydb].[dbo].[ConvertToolLog] ([Message]) values('test')")
Run Code Online (Sandbox Code Playgroud)

我没有得到任何错误,但没有插入表中.在我获取数据之后,直接获取插入的行.但没有任何东西得救.

在MS SQL Server Management Studio中,插入确实有效.

python sql python-2.6 pyodbc sql-server-express

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

将数据从pyodbc移动到pandas

我正在查询SQL数据库,我想使用pandas来处理数据.但是,我不确定如何移动数据.以下是我的输入和输出.

import pyodbc
import pandas
from pandas import DataFrame

cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\users\bartogre\desktop\CorpRentalPivot1.accdb;UID="";PWD="";')
crsr = cnxn.cursor()
for table_name in crsr.tables(tableType='TABLE'):
    print(table_name)
cursor = cnxn.cursor()
sql = "Select sum(CYTM), sum(PYTM), BRAND From data Group By BRAND"
cursor.execute(sql)
for data in cursor.fetchall():
    print (data)
Run Code Online (Sandbox Code Playgroud)
('C:\\users\\bartogre\\desktop\\CorpRentalPivot1.accdb', None, 'Data', 'TABLE', None)
('C:\\users\\bartogre\\desktop\\CorpRentalPivot1.accdb', None, 'SFDB', 'TABLE', None)
(Decimal('78071898.71'), Decimal('82192672.29'), 'A')
(Decimal('12120663.79'), Decimal('13278814.52'), 'B')
Run Code Online (Sandbox Code Playgroud)

python pyodbc pandas

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

Python pip无法找到pyodbc

使用virtualenv并尝试安装pyodbc.我能找到的所有资源都声称这应该非常简单.在完成MySQL等的所有基本安装之后,只需执行以下操作:

pip install pyodbc
Run Code Online (Sandbox Code Playgroud)

但是,我看到一个非常奇怪的错误.它没有(据我所知)与丢失的库有关,并且在谷歌搜索这种错误很长一段时间之后,我根本找不到任何有建设性的东西.

(local-dev)espears@espears-w ~ $ pip install pyodbc
Downloading/unpacking pyodbc
  Could not find any downloads that satisfy the requirement pyodbc
  Some externally hosted files were ignored (use --allow-external pyodbc to allow).
Cleaning up...
No distributions at all found for pyodbc
Storing debug log for failure in /home/espears/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用"allow-external"选项,它没有帮助:

(local-dev)espears@espears-w ~ $ pip install --allow-external pyodbc
You must give at least one requirement to install (see "pip help install")
Run Code Online (Sandbox Code Playgroud)

但帮助文档使我看起来正确使用此选项,例如从运行的输出pip help install:

Package Index Options:

... …
Run Code Online (Sandbox Code Playgroud)

python pip pyodbc

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

MSSQL2008 - Pyodbc - 以前的SQL不是查询

我无法弄清楚以下代码有什么问题,语法是正确的(使用SQL Management Studio检查),我有访问权限因为我应该也可以这样做..但是出于某种原因,我试图创建一个表通过PyODBC然后它停止工作.

import pyodbc

def SQL(QUERY, target = '...', DB = '...'):
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + target + DB+';UID=user;PWD=pass')
    cursor = cnxn.cursor()
    cursor.execute(QUERY)
    cpn = []

    for row in cursor:
        cpn.append(row)
    return cpn

print SQL("CREATE TABLE dbo.Approvals (ID SMALLINT NOT NULL IDENTITY PRIMARY KEY, HostName char(120));")
Run Code Online (Sandbox Code Playgroud)

它失败了:

Traceback (most recent call last):
  File "test_sql.py", line 25, in <module>
    print SQL("CREATE TABLE dbo.Approvals (ID SMALLINT NOT NULL IDENTITY PRIMARY KEY, HostName char(120));")
  File "test_sql.py", line 20, in SQL
    for …
Run Code Online (Sandbox Code Playgroud)

python windows pyodbc sql-server-2008

27
推荐指数
5
解决办法
2万
查看次数

SqlAlchemy相当于使用FreeTDS的pyodbc连接字符串

以下作品:

import pyodbc
pyodbc.connect('DRIVER={FreeTDS};Server=my.db.server;Database=mydb;UID=myuser;PWD=mypwd;TDS_Version=8.0;Port=1433;')
Run Code Online (Sandbox Code Playgroud)

以下失败:

import sqlalchemy
sqlalchemy.create_engine("mssql://myuser:mypwd@my.db.server:1433/mydb?driver=FreeTDS& odbc_options='TDS_Version=8.0'").connect()
Run Code Online (Sandbox Code Playgroud)

上面的错误消息是:

DBAPIError :(错误)('08001','[08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnectW)')无无

有人可以指点我正确的方向吗?有没有办法告诉sqlalchemy将特定的连接字符串传递给pyodbc?

请注意:我希望保持此DSN-less.

python sql-server sqlalchemy pyodbc freetds

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

如何使用pyodbc从CSV加速批量插入到MS SQL Server

下面是我想要帮助的代码.我不得不运行超过1,300,000行,这意味着插入~300,000行需要40分钟.

我认为批量插入是加速它的路线?或者是因为我通过for data in reader:部分迭代行?

#Opens the prepped csv file
with open (os.path.join(newpath,outfile), 'r') as f:
    #hooks csv reader to file
    reader = csv.reader(f)
    #pulls out the columns (which match the SQL table)
    columns = next(reader)
    #trims any extra spaces
    columns = [x.strip(' ') for x in columns]
    #starts SQL statement
    query = 'bulk insert into SpikeData123({0}) values ({1})'
    #puts column names in SQL query 'query'
    query = query.format(','.join(columns), ','.join('?' * len(columns)))

    print 'Query is: %s' …
Run Code Online (Sandbox Code Playgroud)

python sql-server bulkinsert pyodbc sql-server-2012

26
推荐指数
2
解决办法
5万
查看次数