标签: pyodbc

在 Python 脚本中创建 SQL Server 临时表

我正在使用 pypyodbc 连接到 SQL Server。我想将结果集存储到临时表中,就像我们在 SQL 中所做的那样。但每次我尝试这样做时,我都会收到以下错误消息:

pypyodbc.ProgrammingError: ('24000', '[24000] [Microsoft][ODBC SQL Server Driver]游标状态无效')

这就是我想查询的:

querytest = "SELECT id into #temp from Team"
cursor1.execute(querytest);
var = cursor1.fetchall()
print(var[:10])
Run Code Online (Sandbox Code Playgroud)

python sql-server pyodbc pymssql pypyodbc

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

尝试使用 PYODBC 将 Access 数据库表读入 Pandas 时出错

我想执行一项简单的任务,将 MS Access 数据库中的表数据以数据帧的形式导入 Pandas 中。我最近工作得很好,现在我不明白为什么它不再工作了。我记得在最初对连接进行故障排除时,我需要做一些工作来安装具有正确位数的新微软数据库驱动程序,因此我重新审视了这一点并重新安装了驱动程序。以下是我用于设置的内容。

笔记本电脑安装记录:

  • 操作系统:Windows 7 Professional 64 位(2017 年 9 月 6 日验证)
  • Access版本:Access 2016 32位(2017年9月6日验证)
  • Python 版本:使用 >Python -V 找到的 Python 3.6.1(64 位)(2017 年 9 月 11 日验证)
  • 所需的 AccessDatabaseEngine 将基于上面的 Python 位数
  • Windows 数据库引擎驱动程序使用 >AccessDatabaseEngine_X64.exe /passive 与 2010 版本的 AccessDatabaseEngine_X64.exe 一起安装(已验证 9/11/2017)

我正在运行以下简单的测试代码来尝试连接到测试数据库。

import pyodbc
import pandas as pd

[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
Run Code Online (Sandbox Code Playgroud)

返回:

['Microsoft Access Driver (*.mdb, *.accdb)']
Run Code Online (Sandbox Code Playgroud)

设置连接字符串。

dbpath = r'Z:\1Users\myfiles\software\JupyterNotebookFiles\testDB.accdb'
conn_str = (r'Driver={Microsoft Access Driver (*.mdb, …
Run Code Online (Sandbox Code Playgroud)

ms-access pyodbc pandas

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

Pyodbc:如何将元组作为查询参数传递?

快速概述:

这里的想法是从 csv 文件中读取一些数据,并将其用作我的 sql 查询部分中的列表NOT IN。我使用下面的代码连接到数据库(.mdb)。注意LP是我试图传递的元组/列表,IRdb是数据库的路径

constr = r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=' + IRdb
conn = pyodbc.connect(constr, autocommit=True)
cur = conn.cursor()

IRsql='''SELECT IRRPResults.RRPName, IRRPResults.PointName, IRRPResults.RiskPerTime FROM IRRPResults 
WHERE IRRPResults.PointName<>? 
AND IRRPResults.RRPName NOT LIKE ? AND IRRPResults.PointName NOT IN ?'''

cur.execute(IRsql,('Total',r'Conn%',LP))
Run Code Online (Sandbox Code Playgroud)

问题:

除了执行语句(在我添加该NOT IN部分之前它确实有效)之外,一切都工作正常。我尝试过LP作为字符串、元组和列表传递,但似乎没有任何效果。我收到以下错误

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] In operator without () in query expression 'IRRPResults.PointName<>Pa_RaM000 AND IRRPResults.RRPName NOT LIKE Pa_RaM001 AND IRRPResults.PointName NOT IN Pa_RaM002'. …
Run Code Online (Sandbox Code Playgroud)

python sql ms-access pyodbc

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

如何使用 FreeTDS ODBC 连接到 SQL Server

我正在尝试通过我的 MacBook 连接到我公司的 SQL Server 数据库,并按照此处概述的步骤操作:https : //github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX但当我进入以下步骤时,不断收到以下错误:

通过运行检查一切是否正常isql TEST myuser mypassword。您应该看到以下内容:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我已经验证了以下工作:

使用 tsql 实用程序测试连接,例如tsql -S TEST -U myuser -P mypassword. 如果这有效,您应该看到以下内容:

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
Run Code Online (Sandbox Code Playgroud)

odbcinst.ini 和 odbc.ini 配置文件都在同一目录中。

MacBook-Pro: myname$ odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources …
Run Code Online (Sandbox Code Playgroud)

python sql-server unixodbc pyodbc freetds

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

使用布尔字段的 Object.Filter() 错误

当我尝试使用时model.objects.filter(mybooleanfield=True)给了我这个错误

('42000', "[42000] [Microsoft] [SQL Server Native Client 11.0] [SQL Server] A non-Boolean expression was specified in a context where a condition was expected, near 'mybooleanfield'. (4145) (SQLExecDirectW) ")
Run Code Online (Sandbox Code Playgroud)

但这只有在使用过滤器时才会发生,BooleanField如果我使用PositiveIntegerField, CharField, DateTimeField or TextField过滤器没有问题。我认为这可能适用于我使用的版本

Python 3.9.0
Django 3.1.3
Pyodbc 4.0.30
Django-mssql-backend 2.8.1
Run Code Online (Sandbox Code Playgroud)

我需要使用作为条件我的BooleanField. 有人知道为什么会这样吗?

django pyodbc django-mssql-backend

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

Pyodbc:成功插入SQL Server数据库后如何获取主键?

我在 SQL Server 中有一个表Employee如下:

ID (AUTO, PK),
firstname (varchar),
lastname (varchar)
Run Code Online (Sandbox Code Playgroud)

我想将数据插入('John', 'Myers')表中。

我使用 pyodbc 在 Python 中使用了以下代码:

connection = pyodbc.connect(...)
cursor = connection.cursor()
cursor.execute("insert into employee(firstname, lastname) values(?, ?)", ['John','Myers'])
Run Code Online (Sandbox Code Playgroud)

是否可以ID在无需编写select查询的情况下获取新插入的行的值?

python sql-server pyodbc

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

Azure Functions:无法打开库“ODBC Driver 17 for SQL Server”

我编写了一个 Python 脚本,用于连接到位于 Azure 环境中托管的虚拟机中的 SQL Server。

我已经能够在虚拟机中本地成功连接并运行查询,但是当我部署到 Azure Functions 时,出现以下错误:

('01000', "[01000] [unixODBC][驱动程序管理器]无法打开 lib 'ODBC Driver 17 for SQL Server': 文件未找到 (0) (SQLDriverConnect)")

几天前我成功运行了脚本并连接到数据库,但由于某种原因,它停止工作,现在出现此错误。

import pyodbc


DatabaseServer = 'Server'
DatabaseName = 'databasename'
conn_str = "Driver={ODBC Driver 17 for SQL Server };Server="+str(DatabaseServer)+';Database='+str(DatabaseName)+";'Trusted_Connection=yes;"

try:
    # Connect to the SQL Server
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()

    # Execute the query
    cursor.execute("SELECT TOP 10 hmy FROM Table")

    # Fetch and print the results
    rows = cursor.fetchall()
    results_str = ""
    for row in …
Run Code Online (Sandbox Code Playgroud)

python sql-server azure pyodbc azure-functions

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

如何使用pyodbc获取Access数据库的特定字段的数据类型?

我正在使用pyodbc对.mbd(访问)文件中的大型数据库进行数据挖掘.

我想创建一个新表,从几个现有表中获取相关信息(然后将其提供给工具).

我想我知道所有我需要传输数据,并且我知道如何创建一个给定列名和数据类型的表,但是我无法获得现有列中相应列的数据类型(INTEGER,VARCHAR等)表.我需要这些类型来兼容地创建新列.

我在互联网上找到的东西(比如这个这个)让我陷入无效命令的麻烦,所以我认为这是一个特定于平台的问题.然后,我在数据库上相当绿色.

有谁知道如何获得这些领域的类型?

python sql ms-access pyodbc

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

在python中将变量作为SQL值插入

exp = "Ted is a good film"
cursor.execute ("insert into films (descp) values (exp)")
cursor.commit()
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的代码与MS SQL服务器,但它说:无效的列名''''我正在使用pyodbc.

python sql pyodbc

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

使用python pyodbc和pandas数据框将数据从SQL服务器导出到Excel

我是Stack以及Python的新手.下面是我的程序,我正在尝试学习如何使用python程序将数据从SQL服务器导出到Excel.我知道直接从SQL服务器导出的方法,这是我只是想学习.下面的程序没有给出任何错误,但它只提供列标题但不提供实际数据.

import pyodbc
import pandas as pd

cnxn = pyodbc.connect("Driver={SQL Server};SERVER=hostname;Database=Practice;UID=XXX;PWD=XXX")

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

columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.DataFrame([tuple(t) for t in cursor.fetchall()], columns=columns)

writer = pd.ExcelWriter('foo.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()
Run Code Online (Sandbox Code Playgroud)

python mysql sql-server excel pyodbc

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