Python Sybase模块vs子进程isql,哪一个更好用?

时间:2016-02-10 07:36:34

标签: python-2.7 sybase isql

我发现isql(使用子进程)与python中的Sybase模块相比花费的时间更少。 有人可以建议我,我应该使用子进程还是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)

1 个答案:

答案 0 :(得分:0)

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

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

因此,只要您只提取不太宽的列或具有二进制数据的列,那么您可能可以使用子进程。更好的解决方案是使用python模块。