首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pypyodbc网络路径不能正常工作

pypyodbc网络路径不能正常工作
EN

Stack Overflow用户
提问于 2017-06-13 14:31:57
回答 1查看 263关注 0票数 1

我使用Python3.6.1和pypyodbc库将.csv文件导入到Management中的本地DB中。有人能告诉我为什么这段代码在Management中工作得很好,但在我的pypyodbc脚本中却不行吗?

Python脚本运行时没有任何错误,但实际上它并没有将C:\MemberMapUpdates中的新C:\MemberMapUpdates文件插入到CSVTest表中。当我在management中运行该SQL命令时,它将按预期的方式插入值。任何见解都会受到赞赏。谢谢。

代码语言:javascript
复制
import pypyodbc
connection = pypyodbc.connect('Driver={SQL Server};'
                              'Server=SERVER-SQL;'
                              'Database=server1;'
                              'uid=sa;pwd=Pa$$word!')
cursor = connection.cursor()
SQLCommand = (
               '''
                 drop table if exists CSVTest

                 create table CSVTest
                 (dccode varchar(255),
                 member varchar(255),
                 date_sub date,
                 date_add date,
                 sa_update date,
                 buff_rad float,
                 geom varchar(255),
                 sub_type varchar(255),
                 notes varchar(255))


                 bulk
                 insert CSVTest
                 from 'C:\MemberMapUpdates\MemberMapUpdates.csv'
                 with (FIRSTROW = 3, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
              '''
              )
cursor.execute(SQLCommand)
connection.close()
print('Process Completed')

插入存储过程的更新脚本

代码语言:javascript
复制
import pypyodbc
#from osgeo import ogr

connection = pypyodbc.connect('Driver={SQL Server};'
                              'Server=SERVER-SQL;'
                              'Database=DB;'
                              'uid=sa;pwd=p@SSWORD!')
cursor = connection.cursor()
SQLCommand = ('exec FirstProcedure')
cursor.execute(SQLCommand)
connection.close()
print('Process Completed')

这是存储过程:

代码语言:javascript
复制
             drop table if exists CSVTest;

             create table CSVTest
             (dccode varchar(255),
             member varchar(255),
             date_sub date,
             date_add date,
             sa_update date,
             buff_rad float,
             geom varchar(255),
             sub_type varchar(255),
             notes varchar(255));


             bulk
             insert CSVTest
             from '\\NETWORKSHARE\MemberMapUpdates\MemberMapUpdates.csv'
             with (FIRSTROW = 3, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-19 12:39:55

这个拼图中缺失的部分是connection.commit()

因此,这是我使用与上面相同的存储过程的完整查询:

代码语言:javascript
复制
import pypyodbc

connection = pypyodbc.connect('Driver={SQL Server};'
                              'Server=SERVER-SQL;'
                              'Database=DB;'
                              'uid=sa;pwd=PASSWORD;')
cursor = connection.cursor()
SQLCommand = ("exec FirstProcedure;")
cursor.execute(SQLCommand)
connection.commit()
connection.close()
print('Process Completed')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44524464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档