在python中执行存储过程而不返回

2024-04-24 03:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这段代码在python中执行SP

conn = pymssql.connect(server="myServer", database="myDB", port="1433", user="myUser", password="myPwd")
pd.read_sql("EXEC MySP", conn)
conn.close()

但我得到了这个错误

File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\sql.py", line 1469, in read_query columns = [col_desc[0] for col_desc in cursor.description]

TypeError: 'NoneType' object is not iterable

在做了一些调查后,我发现错误的原因是没有返回值从SP

好的,我的SP没有任何返回值,我只想按原样执行这个SP。在

不管怎样,我能做到这一点而不犯这个错误吗?在


Tags: 代码inreadsqlserverconnect错误col
2条回答

试试这个:

import sqlalchemy

connection_string = 'mssql+pymssql://{username}:{password}@{host}:{port}/{database}'.format(username = <username>, password = <password>, host = <host>, port = <port>, database = <database>)
engine = sqlalchemy.create_engine(connection_string)
connection = engine.raw_connection()

try:
    cursor = connection.cursor()
    cursor.callproc('<procedure_name>')
    cursor.close()
    connection.commit()
finally:
    connection.close()

您必须在连接字符串中输入用户名、密码等,并在callproc方法中将过程名作为参数输入。在

谢谢基默夫

我刚刚在SP末尾添加了SELECT '',这就解决了这个问题。在

我以为pandas中除了read_sql之外,还有另外一个函数可以修复这个问题,但是我的搜索发现没有。在

相关问题 更多 >