pyodbc用参数名调用存储过程;数据类型问题

时间:2019-04-03 18:39:52

标签: python pyodbc

运行cursor_insert.execute(sql,params)时,即使源数据库表和目标数据库表的数据定义为float,nvarchar和nvarchar以及我的存储过程。

是否将参数设置为一个名为“ params”的新变量,导致数据类型发生这种变化?如果是这样,我该如何解决? (在阅读一些Python文档时,它不应该更改数据类型,对吗?)

page_id/feed? 
fields=name,id,message,created_time&include_hidden=true&limit=100&
access_token=xxxxxx

1 个答案:

答案 0 :(得分:1)

您没有传递parameter值,而是传递了字符串文字,请尝试以下操作:

# Create cursor associated with connection
cursor=conn.cursor()
cursor_select = conn.cursor()
cursor_insert = conn.cursor()

if conn:
    print('***** Connected to DCPWDBS289 *****')

select_str="SELECT TOP 5 Incident_ID,Incident_Type,Priority FROM 
incidents_all WHERE incidents_all.Status NOT IN ('Closed','Resolved')"

cursor_select.execute(select_str)

while True:

    row = cursor_select.fetchone()
    if not row:
        break
    print(' Row:     ', row)

    IncIncident_ID      = row[0]    # Float
    IncIncident_Type    = row[1]    # Str
    IncPriority         = row[2]    # Str

    sql = """EXEC ITSM.dbo.ITSM_LOAD @IncIncident_ID=?, 
    @IncIncident_Type=?,@IncPriority=?"""

    params = (IncIncident_ID, IncIncident_Type, IncPriority)

    cursor_insert.execute(sql,params)

del cursor_insert
cursor.commit()
conn.close()