如何解决使用pyodbc将数据帧写入sql db会出错
我有一个Synapse数据库,正在从中读取一些表以创建数据框。我正在使用下面的方法连接和读取数据库表:
server = 'gbs-marcus-dev-dw.database.windows.net'
database = 'romeo'
username = 'romeouser'
password = 'romeopass'
driver = 'ODBC Driver 17 for SQL Server'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
# select command
query = ''' SELECT * FROM dbo.Masterdata''';
df_input_orig = pd.read_sql(query,cnxn)
pyodbc.drivers()
['SQL Server','ODBC Driver 17 for SQL Server']
创建数据帧后,我正尝试将结果数据帧写回到数据库中,我正在遵循以下两个方法,这两个方法均会产生不同的错误。
方法1:
engine = sqlalchemy.create_engine("mssql+pyodbc://romeouser:romeopass@gbs-marcus-dev-dw.database.windows.net/romeo?driver=ODBC+Driver+17+for+SQL+Server",echo=False)
Insight_instance.to_sql(name='Insight_Instance',con=engine,index=False,if_exists='append')
cursor.execute('commit')
方法1出错:
ProgrammingError: (pyodbc.ProgrammingError) ('42000','[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]111214;An attempt to complete a transaction has failed. No corresponding transaction found. (111214) (SQLEndTran)')
(Background on this error at: http://sqlalche.me/e/13/f405)
方法2:
import pyodbc
import sqlalchemy
import urllib
params = urllib.parse.quote_plus("DRIVER=driver;SERVER=gbs-marcus-dev-dw.database.windows.net;DATABASE=romeo;UID=romeouser;PWD=romeopass")
engine = sqlalchemy.create_engine("mssql+pyodbc://romeouser:romeopass@gbs-marcus-dev-dw.database.windows.net/romeo",echo=False)
engine.connect()
Insight_instance.to_sql(name='Insight_Instance',if_exists='append')
方法2出现错误:
InterfaceError: (pyodbc.InterfaceError) ('IM002','[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
(Background on this error at: http://sqlalche.me/e/13/rvf5)
我对此很陌生,不知道我在哪里或做错了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。