我试图理解当我设置 python 代码在 VM 服务器上运行时开始出现的以下错误,该服务器在我的桌面上安装了 3.9.5 而不是 3.8.5。不确定这是否重要,但这可能是部分原因。
错误
C:\ProgramData\Miniconda3\lib\site-packages\pandas\io\sql.py:758: UserWarning: pandas only support SQLAlchemy connectable(engine/connection) or
database string URI or sqlite3 DBAPI2 connection
other DBAPI2 objects are not tested, please consider using SQLAlchemy
warnings.warn(
Run Code Online (Sandbox Code Playgroud)
这是一个相当简单的 .py 文件,该文件导入 pyodbc 和 sqlalchemy fwiw。产生警告的 sql 调用的相当通用/简单的版本是:
myserver_string = "xxxxxxxxx,nnnn"
db_string = "xxxxxx"
cnxn = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:"+myserver_string+";Database="+db_string +";TrustServerCertificate=no;Connection Timeout=600;Authentication=ActiveDirectoryIntegrated;"
def readAnyTable(tablename, date):
conn = pyodbc.connect(cnxn)
query_result = pd.read_sql_query(
'''
SELECT *
FROM [{0}].[dbo].[{1}]
where Asof >= '{2}'
'''.format(db_string,tablename,date,), conn) …Run Code Online (Sandbox Code Playgroud) 我正在运行Linux(2.6.18-164.15.1.el5.centos.plus)并尝试安装pyodbc.我正在做pip install pyodbc并得到一个很长的错误列表,最终以
错误:命令'gcc'失败,退出状态为1
我查看了 /root/.pip/pip.log并看到以下内容:
InstallationError:命令/ usr/local/bin/python -c"import setuptools; file ='/ home/build/pyodbc/setup.py'; execfile('/ home/build/pyodbc/setup.py')"install - -single-version-external-managed --record /tmp/pip-7MS9Vu-record/install-record.txt失败,错误代码为1
安装pyodbc有没有类似的问题?
我正在使用pip并尝试安装一个名为pyodbc的python模块,它对unixodbc-dev,unixodbc-bin,unixodbc等非python库有一些依赖性.我目前无法在系统中安装这些依赖项,因为我只是在玩,所以我已将它们安装在非标准位置.我如何告诉pip在哪里寻找这些依赖项?更确切地说,如何通过包含dirs(gcc -I)和库dirs(gcc -L -l)的pip来传递信息,以便在构建pyodbc扩展时使用?
如何序列pyodbc光标输出(从.fetchone,.fetchmany或.fetchall)Python字典?
我正在使用bottlepy并需要返回dict,因此它可以将其作为JSON返回.
有没有人最近有部署带有SQL Server数据库后端的Django应用程序的经验?我们的工作场所大量投入SQL Server,如果没有足够开发的后端,它将不支持Django.
我知道mssql.django-pyodbc和django-mssql是非正式支持的后端.这两个项目似乎只有一个人贡献,这有点担心,虽然贡献似乎有点规律.
是否有很好的支持SQL Server的任何其他后端?我在这里提到的两个"足够好"用于生产吗?你有什么经历?
如何使用Windows身份验证将MS SQL Server与pyodbc库连接?
我可以通过MS Access和SQL Server Management Studio连接,但无法获得Python的工作连接ODBC字符串.
这是我尝试过的(也没有'Trusted_Connection=yes'):
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='[system_name]',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes', uid='me',
driver='{SQL Server}', server='localhost',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
uid='me', pwd='[windows_pass]', database='[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}',
database='[server_name]\[database_name]')
Run Code Online (Sandbox Code Playgroud) sql-server odbc windows-authentication pyodbc sql-server-2008-r2
我在Python中使用以下代码(pyodbc用于MS-Access基础).
cursor.execute("select a from tbl where b=? and c=?", (x, y))
Run Code Online (Sandbox Code Playgroud)
没关系,但是出于维护目的,我需要知道发送到数据库的完整而准确的SQL字符串.
有可能吗?怎么样?
我想发送一个大型pandas.DataFrame到运行MS SQL的远程服务器.我现在的方法是将data_frame对象转换为元组列表,然后使用pyODBC的executemany()函数将其发送出去.它是这样的:
import pyodbc as pdb
list_of_tuples = convert_df(data_frame)
connection = pdb.connect(cnxn_str)
cursor = connection.cursor()
cursor.fast_executemany = True
cursor.executemany(sql_statement, list_of_tuples)
connection.commit()
cursor.close()
connection.close()
Run Code Online (Sandbox Code Playgroud)
然后我开始怀疑使用data_frame.to_sql()方法是否可以加速(或至少更具可读性).我想出了以下解决方案:
import sqlalchemy as sa
engine = sa.create_engine("mssql+pyodbc:///?odbc_connect=%s" % cnxn_str)
data_frame.to_sql(table_name, engine, index=False)
Run Code Online (Sandbox Code Playgroud)
现在代码更具可读性,但上传速度至少慢150倍 ......
有没有办法fast_executemany在使用SQLAlchemy时翻转?
我正在使用pandas-0.20.3,pyODBC-4.0.21和sqlalchemy-1.1.13.
我pyodbc上班很困难.我有unixodbc,unixodbc-dev,odbc-postgresql,pyodbc在我的Linux Mint的14.我失去希望找到自己的解决方案安装的软件包,任何帮助表示赞赏.详情如下:
运行:
>>> import pyodbc
>>> conn = pyodbc.connect("DRIVER={PostgreSQL};SERVER=localhost;DATABASE=test;USER=openerp;OPTION=3;")
Run Code Online (Sandbox Code Playgroud)
给我:
>>> pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)
#odbcinst -j给出:
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/atman/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2
Run Code Online (Sandbox Code Playgroud)
这让我觉得存在unixodbc配置问题.这是我的unixodbc配置文件内容:
档案 /etc/odbcinst.ini:
[PostgreSQL ANSI]
Description = PostgreSQL ODBC …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Heroku上安装PyODBC,但是fatal error: sql.h: No such file or directory当pip运行时我会进入日志.我该如何解决这个错误?
pyodbc ×10
python ×7
sql-server ×3
centos ×1
cursor ×1
dictionary ×1
django ×1
heroku ×1
include-path ×1
linux ×1
ms-access ×1
odbc ×1
pandas ×1
pip ×1
postgresql ×1
pypyodbc ×1
python-2.7 ×1
python-3.x ×1
sql ×1
sqlalchemy ×1
unixodbc ×1