使用python上传数据时,未在SQL Server上创建表

时间:2019-03-06 07:45:55

标签: python sql-server

我是第一次使用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()

您可以指导我解决此问题吗?

1 个答案:

答案 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()