永发信息网

Python中函数传参数报错

答案:2  悬赏:30  手机版
解决时间 2021-01-03 05:28
  • 提问者网友:喧嚣尘世
  • 2021-01-02 14:17
下面这段代码是关于DB连接的,我从配置文件读取参数传到MSSQL这个函数去(ms),就报错 ValueError: too many values to unpack (expected 2)。而如果直接hardcode字符串在函数里(ms2),就能成功执行SQL语句。 这四个变量的实际值在ms和ms2中是完全一样的。不知道哪里出了问题……请高手帮忙看一下

# Database Connection
# MSSQL Connection
config=configparser.ConfigParser()
with open (PARAMETER_PATH,"r") as db_conn:
config.readfp(db_conn)
SOURCE_DB_HOST=config.get("SQL Server Connection Setting","host").strip('\r\n\t')
SOURCE_DB_USER=config.get("SQL Server Connection Setting","user").strip('\r\n\t')
SOURCE_DB_PWD=config.get("SQL Server Connection Setting","pwd").strip('\r\n\t')
SOURCE_DB_INSTANCE=config.get("SQL Server Connection Setting","db").strip('\r\n\t')

print(SOURCE_DB_HOST,SOURCE_DB_USER,SOURCE_DB_PWD,SOURCE_DB_INSTANCE)

ms = MSSQL(SOURCE_DB_HOST,SOURCE_DB_USER,SOURCE_DB_PWD,SOURCE_DB_INSTANCE)
print (ms)
ms2 = MSSQL("SHAITUTIL01\\SQLEXPRESS","PCLC0\\etang","^yhn7ujm","Private_DB_Edwin")
print (ms2)

reslist = ms2.ExecQuery("select top 1 * from test_1")
for i in reslist:
print(i)

reslist = ms.ExecQuery("select top 1 * from test_1")
for i in reslist:
print(i)

输出结果是这样的
"SHAITUTIL01\\SQLEXPRESS" "PCLC0\\etang" "^yhn7ujm" "Private_DB_Edwin"


(1000001, 'VIP10001', '??', 'MARGARETA', '?', '??MARGARETA?', 'F', 'Aug 22 2017 5:43PM', 34, datetime.datetime(2014, 4, 15, 17, 27), 'Y ', 1000788, 1000764, datetime.datetime(2014, 4, 15, 17, 34, 29, 67000), datetime.datetime(2014, 4, 15, 17, 34, 29, 67000))
下面就报错了
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-01-02 14:58
那print (ms)的输出内容是一样的么,贴来看看
全部回答
  • 1楼网友:行雁书
  • 2021-01-02 15:30
似乎代码里没有看到你没有加载dll啊。 另外你在c里直接改写python的内存可能不太妥当。通常是在c里构造后,再返回到python里去。 从你的程序上看,调用完thin后,你的变量p似乎变成了空指针。 ctypes调用dll通常都是别人做好的dll,没有办法才自己去调用。这里有好多麻烦事情。 如果是自己写代码,通常会建议你用cython这个模块。很容易就实现接口。你也不用担心这些变量类型与接口封装的问题。 另外我印象中dll似乎与编译器也有关系。用vc可能容易些。用bc,或者是gcc就麻烦些。 另外还有版本的问题,64位与32位不能通用。 原则上讲,你这种用法,也不是不可以,可能还是哪个地方没有弄对。比如编译参数。你可以试试用return type把数据带回来。而不是用指针写内存。 因为p目前按理它是常量,很有可能调用机制中,不会让你改写它。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯