在没有 return 的 python 中执行存储过程
Execute stored procedure in python without return
我正在使用此代码在 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
经过一些研究,我发现错误的原因是没有 returning 值来自 SP。
好的,我的 SP 没有任何 return 值,我只想按原样执行此 SP。
有没有办法在没有这个错误的情况下做到这一点?
试试这个:
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 方法中输入您的过程名称作为参数。
感谢 kjmerf
我刚刚在我的 SP 末尾添加了 SELECT ''
并解决了问题。
我认为 pandas 中的 read_sql
之外可能还有其他函数可以解决此问题,但我的搜索没有找到。
我正在使用此代码在 python
中执行 SPconn = 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
经过一些研究,我发现错误的原因是没有 returning 值来自 SP。
好的,我的 SP 没有任何 return 值,我只想按原样执行此 SP。
有没有办法在没有这个错误的情况下做到这一点?
试试这个:
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 方法中输入您的过程名称作为参数。
感谢 kjmerf
我刚刚在我的 SP 末尾添加了 SELECT ''
并解决了问题。
我认为 pandas 中的 read_sql
之外可能还有其他函数可以解决此问题,但我的搜索没有找到。