标签: pyodbc

pyodbc使用DB2从存储过程返回多个游标

我有一个python程序从db2数据库调用存储过程.我results = cursor.fetchall()用来处理我的存储过程的结果.但是,我的存储过程返回两个游标.results只包含第一个.我需要一种方法来遍历尽可能多的游标.我希望fetchmany()这是我的答案,但事实并非如此.

我真的需要能够做多个结果集,因为我写的程序只能调用一个存储过程.要回去让它能够打两个电话需要很多.除了其中一件事,我需要让10个光标返回.一切都是动态的,因此应用程序不知道它正在运行什么程序,它只是获取数据并将其吐入excel而不知道其含义.我需要一个光标用于数据,而另一个光标用于不同类型的计数和总计.

请帮忙.让我知道如果你需要更多的信息,我不认为精心设计的代码是必要的,因为我正在寻找一个内置的功能来做到这一点,或者甚至可能是一个不同的库,因为我已经完成了我的谷歌搜索,它看起来像pyodbc不会为DB2做这件事.DB2是一个要求:(

db2 stored-procedures pyodbc database-cursor

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

从一些odbc连接到pandas表而不是csv

我在pandas DataFrame中有一些基本信息.我需要加入一些我可以通过pyodbc连接访问的参考表.有没有办法将sql结果集放入pandas DataFrame而不先将结果集写入csv?

将这个额外的步骤输出到csv并进入DataFrame似乎是一种浪费.

pyodbc pandas

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

将pyodbc.Row转换为字符串

我需要将pyodbc.Row转换为字符串。互联网提供了一些建议,但这些建议似乎都不适合我。

row = cursor.fetchone() 
#unicodedata.normalize('NFKD', row).encode('ascii','ignore') #TypeError: must be unicode, not pyodbc.Row
#row.fieldname.encode('utf8') #AttributeError: 'pyodbc.Row' object has no attribute 'fieldname'
tblName = str(row)
tblName.replace("text:u","").replace("'","")
tblName = tblName.encode('utf-8')
print tblName
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了错误(以注释显示),或者似乎没有效果,如此处的输出所示:

(u'myTableName', ) # print tblName
Run Code Online (Sandbox Code Playgroud)

SQL是

tablesWithId = "select table_name \
                          from INFORMATION_SCHEMA.COLUMNS \
                          where COLUMN_NAME like 'MyId' "
cursor.execute(tablesWithId)
Run Code Online (Sandbox Code Playgroud)

Python 2.7

python pyodbc

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

将bytearray写入文件?

我有以下内容:

import pyodbc

# ODBC connection to database
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=CCSQLRESUME;DATABASE=ResumeStore;UID=ray;PWD=Yar!')
cursor = cnxn.cursor()

# SELECT resume data
cursor.execute(
"""SELECT
       rbs.candidate_id,
       rbs.[fileName],
       rbs.resumeData,
       rbs.docType
   FROM [ResumeStore].[dbo].[ResumeBinaryStorage] as rbs (NOLOCK)
   WHERE rbs.candidate_id = 5078707"""
)
Run Code Online (Sandbox Code Playgroud)

在查询时,数据resumeData已存储在bytearray类似的内容中:bytearray(b'\xef\xbb\xbf<html><body><h1><b>Ray Bao</b></h1><h2>')

我想要一个for循环遍历上面的光标并resumeData使用给定的列将列写入本地存储fileName.

for row in cursor:
  #
  # Write to file...
  #
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python pyodbc

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

pyokubc安装在heroku服务器错误命令"gcc"失败,退出状态1 - Django项目

我正在运行一个heroku应用程序,并使用pyODBC.

当我尝试在我的heroku服务器上安装pyodbc时出现此错误.

当我尝试将pyodbc放在requirements.txt文件中时,会发生同样的事情.

我根本不明白该怎么做这个错误,我似乎无法通过windows heroku toolbelt找到如何在heroku服务器上使用sudo apt-get等命令.

这是错误过程.

C:\Users\mads\businesszone>heroku run pip install pyodbc
Running pip install pyodbc on businesszone... up, run.9537
Collecting pyodbc
  Downloading pyodbc-3.0.10.tar.gz (68kB)
    100% |????????????????????????????????| 71kB 4.3MB/s
Installing collected packages: pyodbc
  Running setup.py install for pyodbc ... error
    Complete output from command /app/.heroku/python/bin/python -u -c "import se
tuptools, tokenize;__file__='/tmp/pip-build-jJIUQ3/pyodbc/setup.py';exec(compile
(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file_
_, 'exec'))" install --record /tmp/pip-J0_eAS-record/install-record.txt --single
-version-externally-managed --compile:
    running install
    running build
    running build_ext
    building 'pyodbc' extension
    creating build
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/tmp …
Run Code Online (Sandbox Code Playgroud)

django pip heroku pyodbc

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

使用 pyodbc 和 pandas 将 CSV 加载到 .mdb

背景故事: 我从事财务工作(不是开发人员,因此非常感谢帮助),我的部门目前严重依赖 excel 和 vba 来尽可能多地自动化我们的任务。该公司刚刚验证了一个 python 发行版,我们现在可以使用它,所以我只是想尝试一下。

挑战: 我的第一个挑战是将 CSV 文件加载到 MSAcess 数据库中(因为并非所有人都精通技术,可以纯粹使用开发工具和数据库进行工作,因此需要让每个人都轻松完成工作)。

我可以在互联网上找到零碎的不同 ppl 代码,我可以将它们放在一起,它可以工作,但结果却变成了弗兰肯斯坦。

它在做什么以及为什么:

  1. 将 CSV 加载到变量
  2. 去掉第一行(因为源文件不是真正的 CSV,文件开头有垃圾行)
  3. 导出到临时驱动器中的 CSV(因为无法弄清楚如何从变量加载到熊猫)
  4. 使用 panda 将 CSV 加载到 SQLite(因为 panda 能够推断每列的数据类型)
  5. 将“创建表”语句导出到变量
  6. 使用 pyodbc 在 .mdb 文件中创建表
  7. 将数据逐行加载到 .mdb 表中(非常慢)

TL;DR:
当前的代码是不同代码的拼凑而成,它既丑陋又缓慢,您会更改什么以使其更有效/优化它?

目标是拥有一个将 CSV 加载到 .mdb 的代码,可能使用正确的数据类型来创建表。

import csv
import pyodbc
import pandas
import pandas.io.sql
import sqlite3
import tempfile
import time
import string


def load_csv_to_access(access_path, table_name, csv_path, skip_rows):


# open CSV file, load to a variable, output to …
Run Code Online (Sandbox Code Playgroud)

python csv ms-access pyodbc pandas

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

Pyodbc - 使用 WHERE 子句运行 SQL 查询(语法错误)

我正在使用 Pyodbc,并且已连接到数据库。我可以轻松地提取仅使用 SELECT 和 FROM 语句的数据。

但是,当我尝试使用 WHERE 语句时,它会抛出语法错误:

这是代码:

import pyodbc

conn = pyodbc.connect('DSN=QueryBuilder')
cursor = conn.cursor()
cursor.execute('SELECT * FROM dbo.Grantinformation WHERE HoldingOrganisationName = 'university of edinburgh'')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

语法错误:无效语法

如果我运行:

SELECT * 
FROM dbo.Grantinformation
WHERE HoldingOrganisationName = 'university of edinburgh'
Run Code Online (Sandbox Code Playgroud)

在 SQL Server Management Studio 中,SQL 运行良好,所以很明显我在使用 pyodbc 时做错了什么?

非常感谢

python sql pyodbc

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

如何使用 AD 通用身份验证将 Python 的 pyodbc 连接到 MS SQL?

我连接到两个数据库,第一个使用“SQL Server 身份验证”,第二个使用“Active Directory 通用身份验证”。

在 Win 7、python 2.7.12、pyodbc v4.0.17 上运行它,安装了 Microsoft Online Services 登录助手,我通常从 MSSMS 2016 访问数据库。

对于第一个数据库,我使用以下方法,该方法有效:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=ourDatabase.database.windows.net;PORT=1433;DATABASE=ourDataBaseName;UID=USERID;PWD=PASSWORD')
Run Code Online (Sandbox Code Playgroud)

第二个数据库我已经尝试了所有这些,但都不起作用:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=.\ourDatabase.database.windows.net;DATABASE=ourDataBaseName;UID=user@companydomain.com;PWD=MyPass;Trusted_Connection=yes')

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=ourDatabase.database.windows.net;DATABASE=ourDataBaseName;UID=user@companydomain.com;PWD=MyPass;Trusted_Connection=yes')

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=ourDatabase.database.windows.net;DATABASE=ourDataBaseName;UID=user;PWD=MyPass;Trusted_Connection=yes')

cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=.\ourDatabase.database.windows.net;DATABASE=ourDataBaseName;UID=user@companydomain.com;PWD=MyPass;Trusted_Connection=yes')
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

python sql-server active-directory pyodbc

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

如何使用pyodbc将变量插入数据库?

highscore= score
cursor.execute("insert into tble values (hscore) hishscore.getvalue"):
Run Code Online (Sandbox Code Playgroud)

que:score 将保存为变量 highscore。该高分需要保存到字段 hscore 中的数据库中。插入和获取价值的正确代码是什么。

sql-server pyodbc python-3.x

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

TRUNCATE TABLE 在 Pyodbc 中不起作用

import pyodbc

con=pyodbc.connect('Driver={SQL Server};Server=New;Database=Countrydatabase;Trusted_connection=yes')
cur=con.cursor()
cur.execute("TRUNCATE Countrydatabase..region")   
con.close()
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 pyodbc 模块截断表。但它不断抛出错误。

回溯(最近一次通话):文件“C:/Users/sean/Desktop/script.py”,第 6 行,在 cur.execute("TRUNCATE Countrydatabase..region") pyodbc.ProgrammingError: ('42000', " [42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]'Countrydatabase' 附近的语法不正确。(102) (SQLExecDirectW)")

当我使用“SELECT”语句时,相同的代码工作正常。

python sql sql-server pyodbc python-3.x

1
推荐指数
2
解决办法
6271
查看次数