小编joa*_*inn的帖子

如何使用 pyodbc 获取 SQL Server 存储过程返回的行集?

我的问题与stackoverflow/9915788密切相关。

我正在使用 pyodbc 将数据上传到外部 SQL 数据库,为此我使用该数据库的存储过程。该过程返回两件事:

  • 行集(如果过程正常,则包含文本“成功”,如果失败则包含文本“失败”,后跟任何可用原因)
  • 整数值(0 表示成功,-1 表示失败)

我设法使用上面链接中描述的方法读出了整数值,但我也想读出行集,因为我想在出现任何错误时获取更多信息。

有什么想法如何做到这一点?我不是 SQL 专家,但根据我的理解,行集应该是“类似游标”的对象,因为应该可以循环该行;但我如何在 select 语句中得到这个?

这就是我获取整数值的方法:

def CallStoredProc(conn, procName, *args):
    sql = """SET NOCOUNT ON;
            DECLARE @ret int
            EXEC @ret = %s %s
            SELECT @ret""" % (procName, ','.join(['?'] * len(args)))
    return conn.execute(sql, args).fetchall()
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获得该行,它也应该在某个地方可用。

python sql-server stored-procedures pyodbc

4
推荐指数
1
解决办法
5262
查看次数

来自 mssql 数据库的 sqlalchemy 映射表,带有“前缀命名空间”

我已经为此苦苦挣扎了一段时间,但还没有找到答案,或者也许我已经看到了答案,只是没有得到它 - 但是,我希望我能够描述我的问题。

我有一个 MS SQL 数据库,其中的表按名称空间(或任何名称)分组,由 Prefix.Tablename(带点)表示。因此,请求某些内容的本机 sql 语句如下所示:

    SELECT TOP 100 
     [Value], [ValueDate]
    FROM [FinancialDataBase].[Reporting].[IndexedElements]
Run Code Online (Sandbox Code Playgroud)

如何将其映射到 sqlalchemy?如果“Reporting”前缀不存在,解决方案(或一种方法)如下所示:

from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base, declared_attr
from sqlalchemy.orm import sessionmaker

def get_session():
    from urllib.parse import quote_plus as urllib_quote_plus

    server = "FinancialDataBase.sql.local"
    connstr = "DRIVER={SQL Server};SERVER=%s;DATABASE=FinancialDataBase" % server
    params = urllib_quote_plus(connstr)
    base_url = "mssql+pyodbc:///?odbc_connect=%s" % params

    engine  = create_engine(base_url,echo=True)
    Session = sessionmaker(bind=engine)
    session = Session()

    return engine, session

Base = declarative_base()

class IndexedElements(Base):
    __tablename__ = "IndexedElements"

    UniqueID = Column(String,primary_key=True) …
Run Code Online (Sandbox Code Playgroud)

python sql sql-server orm sqlalchemy

2
推荐指数
1
解决办法
2967
查看次数

Python3.x中没有方法解析顺序(__mro__)?

我想知道方法解析顺序属性mro在Python 3.x中不再可用了.例如,使用Python 3.5.2并创建一个随机类对象实例A,内置或自我实现

A = dict()
Run Code Online (Sandbox Code Playgroud)

然后打电话

A.__mro__
Run Code Online (Sandbox Code Playgroud)

不起作用,提高

AttributeError: 'A' object has no attribute '__mro__'
Run Code Online (Sandbox Code Playgroud)

我尝试使用A.mro(),但这会产生相同类型的异常.我现在如何收到方法解析订单?

python

1
推荐指数
1
解决办法
1618
查看次数

标签 统计

python ×3

sql-server ×2

orm ×1

pyodbc ×1

sql ×1

sqlalchemy ×1

stored-procedures ×1