I have an excel file. Im importing that to dataframe and trying to update a database table using the data.
import pyodbc def get_sale_file(): try: cnxn = pyodbc.connect('DRIVER=ODBC Driver 17 for SQL Server;' 'SERVER=' + server + ';DATABASE=' + database + ';UID=' + uname + ';PWD=' + pword, autocommit=False) files = os.listdir(ile_path) df = pd.DataFrame() for f in files: if (f.endswith('.xlsx') or f.endswith('.xls')): df = pd.read_excel(os.path.join(sap_file_path, f)) df.to_sql('temptable', cnxn, if_exists='replace') query = "UPDATE MList AS mas" + \ " SET TTY = temp.[Territory Code] ," + \ " Freq =temp.[Frequency Code]," + \ " FROM temptable AS temp" + \ " WHERE mas.SiteCode = temp.[ri a]" When I execute above code block; I get
1/12/2019 10:19:45 AM ERROR: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'sqlite_master'. (208) (SQLExecDirectW)") Am i trying in right way? Does panads have any other function to update mssql table other than to_sql? How can I overcome above error?
Edit Should i have to create temptable beforehand to load datafarme? If that so, my file contains 100s of column, it may vary..(except few columns) How could I make sure pandas to load only few columns to temptable?