2015-01-04 3 views
0

에서 테이블에파이썬이 들어 ... 내가 엑셀에서 데이터를 읽고 테이블에 삽입해야 엑셀

을 여러 값을 삽입 I 파이썬 2.7, pymssql 및 xlrd 모듈을 ... 사용하고

SQL 연결이 정상적으로 작동하고 Excel에서 데이터를 올바르게 읽을 수 있습니다.

내 테이블 구조 :

CREATE TABLE MONTHLY_BUDGET 
(
    SEQUENCE   INT IDENTITY, 
    TRANSACTION_DATE VARCHAR(100), 
    TRANSACTION_REMARKS VARCHAR(1000), 
    WITHDRAWL_AMOUNT VARCHAR(100), 
    DEPOSIT_AMOUNT  VARCHAR(100), 
    BALANCE_AMOUNT  VARCHAR(100) 
) 

내 엑셀 값이 같다 : 표에 여러 값을 삽입하는 동안 나는 문제가 있습니다

02/01/2015 To RD Ac no 147825000874 7,000.00 - 36,575.74 

... 내가 할 방법을 잘 모르겠습니다 이 ...

import xlrd 
import pymssql 

file_location = 'C:/Users/praveen/Downloads/OpTransactionHistory03-01-2015.xls' 

#Connecting SQL Server 
conn = pymssql.connect (host='host',user='user',password='pwd',database='Practice') 
cur = conn.cursor() 

# Open Workbook 
workbook = xlrd.open_workbook(file_location) 

# Open Worksheet 
sheet = workbook.sheet_by_index(0) 

for rows in range(13,sheet.nrows): 
    for cols in range(sheet.ncols): 
     cur.execute(
     " INSERT INTO MONTHLY_BUDGET VALUES (%s, %s, %s, %s, %s)", <--- Not sure!!! 
     [(sheet.cell_value(rows,cols))]) 

conn.commit() 

오류 : 에 ValueError '의 PARAMS'인수는()는 튜플 수 있습니다 또는 사전.

워드 프로세서 현재 위치 : http://pymssql.org/en/stable/pymssql_examples.html

답변

0

당신은 점점 예외는 있지만 목록에 전달하는 ''의 PARAMS '인수가()는 튜플 또는 사전 될 수있다 "고 말했다. 또한 매개 변수 목록은 4 개의 값이있는 목록 대신 단일 튜플로 나타납니다.

cur.execute(
    " INSERT INTO MONTHLY_BUDGET VALUES (?, ?, ?, ?, ?)", <--- Not sure!!! 
    (sheet.cell_value(rows,cols))) 

cur.execute(
    " INSERT INTO MONTHLY_BUDGET VALUES (?, ?, ?, ?, ?)", <--- Not sure!!! 
    [(sheet.cell_value(rows,cols))]) 

을 변경해보십시오 ... 아니면

cur.execute(
    " INSERT INTO MONTHLY_BUDGET VALUES (?, ?, ?, ?, ?)", <--- Not sure!!! 
    ((sheet.cell_value(rows,cols)))) 

NB : 검증되지 않은. 필자는 항상 SQL에서 바인드 변수를 호출하는 방법을 변경했습니다.

+0

이 작동하지만 지금은 다른 오류가 발생합니다 : File "C : \ Users \ praveen \ Desktop \ ReadDat (sheet.cell_value (rows, cols))) TypeError : 'str'개체가 아닙니다. callable – Praveenks

+0

내 게시물을 편집했습니다. 귀하의 SQL에서 바인드 변수를 올바르게 사용하고 있다고 생각하지 않습니다. –