我是
pytds
的新手。将数据插入 SQL Server 时遇到 TypeError: not enough arguments for format string
问题。
我遇到的问题是:
回溯(最近一次调用最后一次): 文件“c:/Users/mydesk/Desktop/test/test_pytds.py”,第 64 行,位于 connect_and_call_stored_procedure(查询,val) 文件“c:/Users/mydesk/Desktop/test/test_pytds.py”,第 48 行,在 call_sproc 中 光标.执行(查询,(tvp,)) 文件“C:\Program Files (x86)\Python38-32\lib\site-packages\pytds_init_.py”,第 739 行,执行中 self.执行(操作,参数) 文件“C:\Program Files (x86)\Python38-32\lib\site-packages\pytds_init.py”,第 701 行,在 _execute 中 操作 = 操作 % 名称[0] 类型错误:格式字符串参数不足
我错过了一些事情。让我知道您的宝贵意见。
我的完整代码:
import pytds
def get_query() -> str:
sql = '''
DECLARE @tbl [dbo].[tbl]
insert into @tbl
(
col1, col2, col3
)
values (%s,%s,%s)
'''
query += '''
EXECUTE [dbo].[stproc]
@tbl
'''
return sql
def call_sproc(query, val):
server = 'my_server'
user = 'my_user'
password = 'secret'
database = 'my_db'
try:
conn = pytds.connect(server=server, user=user, password=password, database=database)
cursor = conn.cursor()
tvp = pytds.TableValuedParam(type_name='dbo.tbl', rows=val)
cursor.execute(query, (tvp,))
conn.commit()
cursor.close()
conn.close()
except pytds.Error as e:
print("Connection issue:", e)
###
val=[('col1_val'), ('col2_val'), ('col3_val')]
my_sql = get_query()
call_sproc(my_sql, val)
要调用存储过程,不需要任何查询或
DECLARE
。只需按照文档所说的操作并使用 callproc
cursor.callproc("dbo.stproc", (tvp,))
或者,如果您确实想使用临时批处理,那么就这样做
cursor.execute("EXECUTE dbo.stproc %s", (tvp,))