Python 至“sql-”;无法在类似字节的对象上使用字符串模式;
我试图使用pandas、sqlalchemy和pyodbc将数据帧(df2)写入sql数据库中的表中。我已成功地使用pyodbc连接到数据库。但是,当我尝试使用带有to_sql的引擎时,它会在标题中抛出错误。我认为在解析引擎创建字符串时,urllib部分缺少了一些内容 以下是我的代码片段:Python 至“sql-”;无法在类似字节的对象上使用字符串模式;,python,pandas,sqlalchemy,pypyodbc,Python,Pandas,Sqlalchemy,Pypyodbc,我试图使用pandas、sqlalchemy和pyodbc将数据帧(df2)写入sql数据库中的表中。我已成功地使用pyodbc连接到数据库。但是,当我尝试使用带有to_sql的引擎时,它会在标题中抛出错误。我认为在解析引擎创建字符串时,urllib部分缺少了一些内容 以下是我的代码片段: connStr = "Driver=SQL Server Native Client 10.0; Server=Sname-L\SQLEXPRESS;database=DBname;trusted_conne
connStr = "Driver=SQL Server Native Client 10.0; Server=Sname-L\SQLEXPRESS;database=DBname;trusted_connection=yes;"
connEncodedStr = urllib.parse.quote_plus(connStr)
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect={}".format(connEncodedStr),module=pypyodbc,echo=True)
df2.to_sql('db_table2', engine, if_exists='replace')
print(engine)
结果:
Engine(mssql+pyodbc:///?odbc_connect=Driver=SQL Server Native Client 10.0; Server=Sname-L\SQLEXPRESS;database=DBname;trusted_connection=yes;)
以下是回溯:
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Continuum\Anaconda3\lib\site-packages\s
qlalchemy\pool.py", line 1122, in _do_get
return self._pool.get(wait, self._timeout)
File "C:\Users\user\AppData\Local\Continuum\Anaconda3\lib\site-packages\s
qlalchemy\util\queue.py", line 145, in get
raise Empty
sqlalchemy.util.queue.Empty
然而,这也发生了:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "noaadatamanip_datafram.py", line 50, in <module>
df2.to_sql('db_table2', engine, if_exists='replace')
File "C:\Users\user\AppData\Local\Continuum\Anaconda3\lib\site-packages\p
andas\core\generic.py", line 1201, in to_sql
chunksize=chunksize, dtype=dtype)
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“noadatamanip_datafram.py”,第50行,在
df2.to_sql('db_table2',引擎,如果存在='replace')
文件“C:\Users\user\AppData\Local\Continuum\Anaconda3\lib\site packages\p
andas\core\generic.py”,第1201行,在to_sql中
chunksize=chunksize,dtype=dtype)
上面的代码持续了很多行,并在标题中返回了错误。让我知道,如果张贴整个事情将是有益的
很抱歉,我的错误处理技能很低 您可以向我们展示
to_sql()
提供的标题中错误的回溯。这就是您要找的吗?第47行,在df2.to_sql('db_table2',engine,if_exists='replace')第1201行,在to_sql chunksize=chunksize,dtype=dtype)第470行,在to_sql table.create()行,看起来像是堆栈回溯的一部分。编辑问题以包含完整的回溯,并确保将其格式化为代码,以便我们看到Python显示的确切换行符。谢谢。无需在引擎连接中添加odbc连接字符串。请参阅我删除了“odbc_connect=”,但是当我这样做时,它返回了:sqlalchemy.exc.DBAPIError:(pypypyodbc.Error)(“IM002”、“[IM002][Microsoft][odbc Driver Manager]未找到数据源名称且未指定默认驱动程序”)。这将有助于您向我们显示从标题中的错误(其中到_sql()
提供给您。这就是您要找的吗?第47行,在df2.to_sql('db_table2',engine,if_exists='replace')第1201行,在to_sql chunksize=chunksize,dtype=dtype)第470行,在to_sql table.create()行,看起来像是堆栈回溯的一部分。编辑问题以包含完整的回溯,并确保将其格式化为代码,以便我们看到Python显示的确切换行符。谢谢。无需在引擎连接中添加odbc连接字符串。请参阅,我删除了“odbc_connect=”,但是当我这样做时,它返回:sqlalchemy.exc.dbapierro:(pypyodbc.Error)(“IM002”、“[IM002][Microsoft][odbc驱动程序管理器]未找到数据源名称且未指定默认驱动程序”)