我是第一次使用python连接sql服务器。我需要从sql服务器读取一些数据以进行处理并将处理后的数据上传到sql服务器上,所有这些任务都将使用python完成。所以我写了代码来从sql server中提取数据,进行了处理&最后,当我试图将数据上传到sql server上时,我的代码运行正常,但是我没有从python收到任何错误消息。即使我试图使用我的python代码从sql server检索数据,也无法在SQL Server上看到该表,但仍收到错误消息
pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'output1'. (208) (SQLExecDirectW)")
下面是我用来将数据插入sql服务器的代码
conn = sqlite3.connect('Driver={SQL Server};'
'Server=My server name;'
'Database=my data base name;'
'uid=my uid;pwd=my password')
c=conn.cursor()
date = dt.datetime.today().strftime("%m/%d/%Y")
dataToUpload['OPT_TYPE']=opt_type
dataToUpload['Date']=date
list_opt_output=dataToUpload.values.tolist()
c.execute('''CREATE TABLE if not exists output1
(Class text,Location text,Name text,Maths decimal(5,2), nonMaths decimal(5,2), promopercent decimal(5,3),OPT_TYPE text,Date date)''')
conn.commit()
print("Output table created")
c.executemany('''INSERT INTO output1(Class,Location,Name,Maths, nonMaths,promopercent,OPT_TYPE,Date) VALUES (?,?,?,?,?,?,?,?)''', list_opt_output)
conn.commit()
conn.close()
您可以指导我解决此问题吗?
答案 0 :(得分:3)
CREATE TABLE if not exists output1
无效的SQL Server
语法。您可以使用IF OBJECT_ID('output1','U') IS NULL
检查表是否存在。
按如下所示更改查询。
c.execute('''IF OBJECT_ID(''output1'',''U'') IS NULL CREATE TABLE output1
(Class text,Location text,Name text,Maths decimal(5,2), nonMaths decimal(5,2), promopercent decimal(5,3),OPT_TYPE text,Date date)''')
conn.commit()