首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pymssql批量插入错误(python)

pymssql批量插入错误(python)
EN

Stack Overflow用户
提问于 2016-04-01 15:35:48
回答 2查看 2.1K关注 0票数 1

试图使用pymssql批量插入CSV文件的代码如下:

代码语言:javascript
复制
conn = pymssql.connect(host='server', user='user', password='secret', database='My_Dev')
cur = conn.cursor()
load = 'BULK INSERT TempStaging FROM \'/home/dross/python/scripts/var/csv/' + f + '.csv\' WITH (FIRSTROW = 1,FIELDTERMINATOR = ',',ROWTERMINATOR = \'\\n\') GO")'
cur.execute(load)

执行get时出现以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "./uploadResults.py", line 46, in <module>
    cur.execute(sweepload)
  File "pymssql.pyx", line 447, in pymssql.Cursor.execute (pymssql.c:7092)
  File "_mssql.pyx", line 1009, in _mssql.MSSQLConnection.execute_query (_mssql.c:11585)
  File "_mssql.pyx", line 1040, in _mssql.MSSQLConnection.execute_query (_mssql.c:11459)
  File "_mssql.pyx", line 1160, in _mssql.MSSQLConnection.format_and_run_query (_mssql.c:12652)
  File "_mssql.pyx", line 203, in _mssql.ensure_bytes (_mssql.c:2733)
AttributeError: 'tuple' object has no attribute 'encode'

第46行是cur.execute线

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-01 16:12:06

请注意,.format()可以允许sql注入,但是如果您控制文件名,那么它就没有那么糟糕(不确定参数在这里是否工作)。

此外,在处理SQL时,您应该使用三重引号字符串,这样您的生活就会好得多。如下所示:

代码语言:javascript
复制
load = '''BULK INSERT TempStaging FROM /home/dross/python/scripts/var/csv/{}.csv WITH (FIRSTROW=1, FIELDTERMINATOR=',', ROWTERMINATOR='\n')'''.format(filename)

由于引用了三重,您还可以拆分它以使其更容易阅读:

代码语言:javascript
复制
load = '''
    BULK INSERT TempStaging
    FROM /home/dross/python/scripts/var/csv/{}.csv
    WITH (
        FIRSTROW=1
      , FIELDTERMINATOR=','
      , ROWTERMINATOR='\n'
    )
'''.format(filename)
票数 1
EN

Stack Overflow用户

发布于 2018-06-25 08:54:15

您应该将字符串定义如下:

代码语言:javascript
复制
load = "BULK INSERT TempStaging FROM /home/dross/python/scripts/var/csv/" + f + ".csv  WITH ( FIRSTROW=1 , FIELDTERMINATOR=',' , ROWTERMINATOR='\\n')"   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36360301

复制
相关文章

相似问题

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