python访问TimesTen

时间:2011-11-02 14:42:50

标签: python timesten

我google了很多,找到任何python模块来访问TimesTen(在内存数据库中)。 我正在编写一个自动化测试框架(更像是System Test而不是Unit Test)。有人知道这样的模块吗?最后一招是自己写封面,但这是我真正想要避免的。

5 个答案:

答案 0 :(得分:2)

要将Python与TimesTen(11.2或18.1)一起使用,应使用cx_Oracle

cx_Oracle在TimesTen和Oracle RDBMS中的工作原理都相同

cx_Oracle使用ODPI-C,它是OCI的C库包装器

对于TimesTen和Oracle RDBMS,cx_Oracle可以在连接字符串中使用Easy connect方法或tnsnames.ora

以下cx_Oracle示例使用tnsnames.ora [ie doug / doug @ sampledb]

# myscript.py

from __future__ import print_function

import cx_Oracle

connection = cx_Oracle.connect("doug", "doug", "sampledb")
cursor = connection.cursor()
cursor.execute("insert into t values (42)")
connection.commit()
connection.close()

TimesTen 18.1.2.3 sampledb的直接链接的和客户端服务器tnsnames.ora条目为:

sampledb =(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME = sampledb)(SERVER = timesten_direct)))

sampledbCS =(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME = sampledbCS)(SERVER = timesten_client)))

与往常一样,您需要来源bin / ttenv.sh来配置环境!

在我的Ubuntu 16.04计算机上,我的PATH和LD_LIBRARY_PATH为:

echo $ PATH / home / ubuntu / tt18123 / bin:/ home / ubuntu / tt18123 / install / bin:/ home / ubuntu / tt18123 / install / ttoracle_home / instantclient_11_2:/ home / ubuntu / tt18123 / install / ttoracle_home / instantclient_11_2 / sdk:/ home /ubuntu/.cargo/bin:/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/ sbin:/ bin:/ usr / games:/ usr / local / games:/ snap / bin

回显$ LD_LIBRARY_PATH / home / ubuntu / tt18123 / ttclasses / lib:/ home / ubuntu / tt18123 / install / lib:/ home / ubuntu / tt18123 / install / ttoracle_home / instantclient_11_2

回显$ TNS_ADMIN / home / ubuntu / tt18123 / install / network / admin / samples

Oracle TimesTen将在TimesTen 18.1.3中正式支持ODPI-C和cx_Oracle

请避免将任何基于ODBC的python python库与TimesTen一起使用,因为cx_Oracle是Oracle开发测试和开发的对象。

答案 1 :(得分:0)

我没有找到原生的,但TimesTen有ODBC 你可以使用的界面。

http://www.compwisdom.com/topics/ODBC

答案 2 :(得分:0)

pyodbc可以在odbc数据库上运行。我不确定它是否真的有效。我认为pyodbc需要odbc 3,而timesten可能不支持(没有检查),但值得一试。

还有mxODBC,我还没试过。这可能也有效。

是的,所以这是我尝试过后的更新: (假设你是某种unix) 它实际上与pyodbcunixodbc一起使用。 pyodbc需要ODBC3.x和TimesTen不支持。但是,unixodbc将为你们“翻译”。 这意味着你不能使用pyodbc中的timesten libodbc.so,因为它缺少ODBC3中的一堆函数。

答案 3 :(得分:0)

通过Python模块访问TimesTen的最佳方法是使用cx_Oracle

cx_Oracle使用基于OCI的驱动程序。 TimesTen支持OCI,您可以通过tnsnames.ora或Easy Connect命名方法进行连接,就像使用Oracle DB一样。

答案 4 :(得分:0)

@ScalableDBDoug,您介意提供python代码段吗?我尝试在python脚本中使用cx_Oracle,但收到错误消息:

cx_Oracle.DatabaseError: ORA-12547: TNS:lost contact

这是我的代码段:


import cx_Oracle

dsn_tns = cx_Oracle.makedsn('TTSERVER',TTPORT,service_name='TTSERVICE');
print(dsn_tns)
connection = cx_Oracle.connect('USER', 'PASS', dsn_tns)

cursor = connection.cursor()
cursor.execute("""SELECT * FROM MYTABLE""")
for record in cursor:
    print("Values:", record)

作为一种解决方法,我现在使用UnixODBC和pyodbc查询timeten数据库,但是想使用本机cx_Oracle模块访问timeten。

谢谢