Pandas to_sql到sqlite返回’Engine’对象没有属性’cursor’

前端之家收集整理的这篇文章主要介绍了Pandas to_sql到sqlite返回’Engine’对象没有属性’cursor’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在pandas中有一个working_df我想输出sqlite数据库.
from sqlalchemy import create_engine

sql_engine = create_engine('sqlite:///test.db',echo=False)
working_df.to_sql('data',sql_engine,index=False,if_exists='append')

返回:AttributeError:’Engine’对象没有属性’cursor’

有什么想法吗?

熊猫版’0.18.1′

编辑:添加完整跟踪

AttributeError                            Traceback (most recent call last)
<ipython-input-41-4f64fc939721> in <module>()
----> 1 working_df.to_sql('data',engine,if_exists='append')

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/core/generic.py in to_sql(self,name,con,flavor,schema,if_exists,index,index_label,chunksize,dtype)
   1163         sql.to_sql(self,flavor=flavor,schema=schema,1164                    if_exists=if_exists,index=index,index_label=index_label,-> 1165                    chunksize=chunksize,dtype=dtype)
   1166 
   1167     def to_pickle(self,path):

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/io/sql.py in to_sql(frame,dtype)
    569     pandas_sql.to_sql(frame,if_exists=if_exists,570                       index_label=index_label,--> 571                       chunksize=chunksize,dtype=dtype)
    572 
    573 

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/io/sql.py in to_sql(self,frame,dtype)
   1659                             if_exists=if_exists,1660                             dtype=dtype)
-> 1661         table.create()
   1662         table.insert(chunksize)
   1663 

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/io/sql.py in create(self)
    688 
    689     def create(self):
--> 690         if self.exists():
    691             if self.if_exists == 'fail':
    692                 raise ValueError("Table '%s' already exists." % self.name)

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/io/sql.py in exists(self)
    676 
    677     def exists(self):
--> 678         return self.pd_sql.has_table(self.name,self.schema)
    679 
    680     def sql_schema(self):

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/io/sql.py in has_table(self,schema)
   1674         query = flavor_map.get(self.flavor)
   1675 
-> 1676         return len(self.execute(query,[name,]).fetchall()) > 0
   1677 
   1678     def get_table(self,table_name,schema=None):

/Users/tom/anaconda/envs/data_science/lib/python3.5/site-packages/pandas/io/sql.py in execute(self,*args,**kwargs)
   1557             cur = self.con
   1558         else:
-> 1559             cur = self.con.cursor()
   1560         try:
   1561             if kwargs:

AttributeError: 'Engine' object has no attribute 'cursor'

解决方法

添加raw_connection()为我工作
from sqlalchemy import create_engine

sql_engine = create_engine('sqlite:///test.db',echo=False)
connection = sql_engine.raw_connection()
working_df.to_sql('data',connection,if_exists='append')

我的笔记本会话期间我有conda安装sqlalchemy,所以虽然它可以访问,因为我已经启动了pandas,看起来好像没有sqlalchemy.重新启动会话允许我删除raw_connection().

from sqlalchemy import create_engine

sql_engine = create_engine('sqlite:///test.db',if_exists='append')
原文链接:https://www.f2er.com/mssql/76461.html

猜你在找的MsSQL相关文章