我正在使用 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) 我想执行一项简单的任务,将 MS Access 数据库中的表数据以数据帧的形式导入 Pandas 中。我最近工作得很好,现在我不明白为什么它不再工作了。我记得在最初对连接进行故障排除时,我需要做一些工作来安装具有正确位数的新微软数据库驱动程序,因此我重新审视了这一点并重新安装了驱动程序。以下是我用于设置的内容。
笔记本电脑安装记录:
我正在运行以下简单的测试代码来尝试连接到测试数据库。
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) 快速概述:
这里的想法是从 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) 我正在尝试通过我的 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) 当我尝试使用时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. 有人知道为什么会这样吗?
我在 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 脚本,用于连接到位于 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) 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.
我是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)