【问题标题】:Python Sybase module vs subprocess isql , which one is better to use?Python Sybase 模块 vs 子进程 isql ,哪个更好用?
【发布时间】:2016-02-10 22:17:54
【问题描述】:

我发现 isql(使用子进程)与 python 中的 Sybase 模块相比花费的时间更少。 有人可以建议我,我应该使用 subprocess 还是 Sybase。 下面是我用来理解的小测试脚本。

Query = 'select count(*) from my_table'

start_time1 = datetime.now()
db = Sybase.connect(mdbserver,muserid,mpassword,mdatabase)
c = db.cursor()
c.execute(Query)
list1 = c.fetchall()
end_time1 = datetime.now()
print (end_time1-start_time1)

start_time2 = datetime.now()
command = "./isql -S "+mdbserver+" -U "+muserid+" -P "+mpassword+" -D "+mdatabase+" -s '"+Delimiter+"' --retserverror -w 99999 <<EOF\nSET NOCOUNT ON\n   "+Query+"\ngo\nEOF"
proc = subprocess.Popen(
    command,
    stdout=subprocess.PIPE,stderr=subprocess.PIPE,
    shell=True,
    cwd=sybase_bin
)
output, error = proc.communicate()
end_time2 = datetime.now()
print (end_time2 - start_time2)

【问题讨论】:

    标签: python-2.7 sybase isql


    【解决方案1】:

    isql 用于对数据库的交互式访问,它返回格式化为屏幕输出的数据。还有其他无法直接控制的填充和格式。当您查看二进制/图像或其他非 varchar 数据时,它也无法正常工作。

    Python 模块将按预期提取数据,无需额外格式化。

    因此,只要您只提取不太宽的列或包含二进制数据,那么您就可以使用 subprocess.更好的解决方案是使用 python 模块。

    【讨论】:

    • isql 会影响应用程序的执行,因为它会在整个应用程序上调用新进程。
    • @ReeteshNigam 与 python 模块相比,不确定开销是多少,但在计算周期和消耗的数据库内存方面都有成本。
    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多