网上有很多关于如何使用 pyodbc 在 MS Access 2007 中运行查询的提示,但所有这些查询都是在 Python 脚本本身中编码的。我想使用 pyodbc 调用已保存在 MS Access 中的查询。我怎样才能做到这一点?
我正在使用 pyodbc 从 MSSQL 检索数据,这是我正在使用的代码:
import pyodbc
server = 'xxxxxxxx\DEV'
database = 'SandBox'
username = 'zzzzzzz'
password = 'xxxxxxx'
driver = '{SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=4853;SERVER='+server+';PORT=4853;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("select * from fieldscreenscheme ")
row = cursor.fetchone()
if row:
print row
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息:
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=43853;SERVER='+server+';PORT=43853;DATABASE='+database+';UID='+username+';PWD='+ password)
pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53); [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')
Run Code Online (Sandbox Code Playgroud)
我安装了 …
我正在尝试使用Python3.4连接到SQL Server数据库
这是适合我的代码
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=DESKTOP-GDM2HQ17\SQLEXPRESS;DATABASE=pyconnect;Trusted_Connection=yes')
Run Code Online (Sandbox Code Playgroud)
我使用 Windows 连接登录到我的 Management studio - 数据库。
这是代码,它对我不起作用:
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=DESKTOP-GDM2HQ17\SQLEXPRESS;DATABASE=pyconnect;UID=DESKTOP-GDM2HQ17\sid;PWD=123')
Run Code Online (Sandbox Code Playgroud)
请分享您对我出错的地方的想法。
这是我第一次尝试使用 pyodbc 连接到 docker 映像中的 Azure SQL 数据库。我的 Dockerfile 如下所示:
# the base image
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
COPY music_trends.py ./
# install SQL Server drivers
RUN apt-get update
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./music_trends.py" ]
Run Code Online (Sandbox Code Playgroud)
这会抛出错误消息:
E: Unable to locate package msodbcsql
The command '/bin/sh -c apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev' returned a non-zero code: …Run Code Online (Sandbox Code Playgroud) 我刚开始使用 python,并且在使用 pyodbc 连接到 MS SQL 时遇到一些问题。到目前为止,我已经重新安装了除 Windows 之外的几乎所有内容。重新安装了几次,都是用pip/pip3。甚至尝试过旧版本的 pyodbc。只安装了一个版本的python。未运行任何虚拟机。
使用 python 3.8-32 和 pyodbc 4.0.32。我得到的错误是:
未访问“pyodbc”Pylance
导入“pyodbc”无法解析 Pylance (reportMissingImports)
只是提一下,几个小时以来一直在寻找解决方案,有点疲倦。两年内找不到修复程序,甚至找不到任何相关的帖子。
任何人如果有任何提示/建议,Python 新手都会非常感激。
我有一个使用 pyodbc 的 python 脚本,它连接到远程服务器,并在其上运行 sql 服务器。我有一个使用 sqlalchemy 编写的函数的包,我可以在我的一台计算机上使用它。我用这个字符串连接:
driver = 'SQL+Server+Native+Client+11.0'
engine_string = prefix + '://' + username + ':' + password + '@' + server + '/' + database + '?driver=' + driver
Run Code Online (Sandbox Code Playgroud)
在另一台计算机上,我无法安装本机客户端 11.0,我知道该客户端已被弃用。我尝试将值切换为
driver = 'ODBC+Driver+18+for+SQL+Server'
Run Code Online (Sandbox Code Playgroud)
我在该版本中遇到错误
[ODBC Driver 18 for SQL Server]SSL Provider: The certificate chain was issued by an authority that is not trusted.
Run Code Online (Sandbox Code Playgroud)
然后我尝试了与 Windows 实用程序的通用 odbc 连接,并得到了相同的错误。当我检查“信任服务器证书”时,我能够使 odbc 管理器连接正常工作
从长远来看,这可能不太好,但是有没有办法将该属性添加到上面的第一个字符串中?我尝试了几种变体,但没有任何效果。
我能够与以下内容建立工作连接:
cnxn = pyodbc.connect(
driver = '{ODBC Driver 18 for SQL Server}', …Run Code Online (Sandbox Code Playgroud) 问题是我无法创建一个名为Date(我想是因为它是类型)的字段。有什么主意该怎么做?
from pyodbc import connect
# database connect
conn = connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=test.mdb')
cursor = conn.cursor()
# sql query execute
query = "create table MyTable(name varchar(30), age integer , Date date)"
cursor.execute(query)
# commit changes
conn.commit()
conn.close()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "\Path\to\myscript\test.py", line 9, in <module>
cursor.execute(query)
ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in field definition. (-3553) (SQLExecDirectW)')
Run Code Online (Sandbox Code Playgroud)
环境:Windows 7 64bit,Python 2.7 pyodbc-3.0.6.win-amd64-py2.7
如何使用pyodbc访问我的Microsoft Access 2010数据库(accdb)?以前,我使用了一个mdb数据库,它与连接字符串工作正常:
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s;' % ACCESS_DATABASE_FILE
Run Code Online (Sandbox Code Playgroud)
现在我使用:
import pyodbc
ACCESS_DATABASE_FILE = "PSA_TEST.accdb"
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' % ACCESS_DATABASE_FILE
conn = pyodbc.connect(ODBC_CONN_STR)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:pyodbc.Error:('HY000','[HY000] [Microsoft] [ODBC-Treiber for Microsoft Access]KeinzulässigerDateniname.( - 1044)(SQLDriverConnect)')
这意味着"文件名是不可接受的".我发现了一个相关的问题,但答案对我不起作用(使用pyodbc连接到MS Access 2007(.accdb)数据库).我根据输出使用32位python:
python -c 'import struct; print struct.calcsize("P") * 8'
Run Code Online (Sandbox Code Playgroud)
和MS Access 32位.
[编辑]
我遇到的问题是,在使用函数启动程序时无法连接到数据库.如果我没有用函数启动它,它可以正常工作.我的程序从serverlist.txt中获取计算机名称并在数据库中查找它.然后它给我一台该计算机的"位置ID".
这个版本有效:
import os
import shutil
import fileinput
import pypyodbc
def replaceid(servername):
try:
cursor = connection.cursor()
SQLCommand = ("SELECT Name, Location_ID "
"FROM dbo.I_Location " # table name
"with (nolock)"
"WHERE Name = ?")
Values = [servername]
cursor.execute(SQLCommand,Values)
results = cursor.fetchone()
if results:
print (" Name: " + results[0] + " Location ID: " + str(results[1]))
print (" ")
else:
print (" Location ID for " + servername + " does not exist.")
print (" ")
connection.close()
except:
print("Database is …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Django连接到现有的Informix数据库,我使用django-pyodbc-azure通过odbc处理连接,在python解释器中尝试时连接工作正常:
>>>import pyodbc
>>>conn = pyodbc.connect('DSN=test_ifx;UID=test;PWD=test')
>>>curs = conn.cursor()
>>>curs.execute("select * from someTable")
<pyodbc.Cursor object at 0x0052E520>
Run Code Online (Sandbox Code Playgroud)
所以这项工作很好但是在django中我创建了这样的数据库连接参数:
DATABASES = {
'default' : {
'ENGINE' : 'sql_server.pyodbc',
'NAME' : 'test',
'USERNAME' : 'test',
'PASSWORD' : 'test',
'PORT' : '1260',
'OPTIONS':{
'dsn' : 'test_ifx'
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我启动服务器时,我收到以下错误:
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0353DED0>
Traceback (most recent call last):
File "C:\Users\PatrickStewball\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
self.connect()
File "C:\Users\PatrickStewball\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\base.py", line 194, in connect
self.connection = self.get_new_connection(conn_params)
File "C:\Users\PatrickStewball\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sql_server\pyodbc\base.py", …Run Code Online (Sandbox Code Playgroud)