Python:从excel将多个值插入表中

时间:2015-01-04 08:10:08

标签: python sql-server-2008-r2 xlrd pymssql

我必须从Excel读取数据并将其插入表格...

为此我使用的是Python 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)
)

我的excel值是这样的:

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'arg()只能是元组或字典。

文档在这里:http://pymssql.org/en/stable/pymssql_examples.html

1 个答案:

答案 0 :(得分:0)

你得到的例外是&#34;&#39; params&#39; arg()只能是一个元组或一个字典&#34;但是你在列表中传递。此外,您的参数列表似乎是单个元组而不是具有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))))

注意:未经测试。我一直在改变调用SQL中绑定变量的方式。