标签: jaydebeapi

将Python连接到H2

我正在尝试建立从python2.7到H2的连接(h2-1.4.193.jar - 最新)

H2(正在运行且可用): java -Dh2.bindAddress=127.0.0.1 -cp "E:\Dir\h2-1.4.193.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Server -tcpPort 15081 -baseDir E:\Dir\db

对于我正在使用的python jaydebeapi:

import jaydebeapi

conn = jaydebeapi.connect('org.h2.Driver', ['jdbc:h2:tcp://localhost:15081/db/test', 'sa', ''], 'E:\Path\to\h2-1.4.193.jar')
curs = conn.cursor()
curs.execute('create table PERSON ("PERSON_ID" INTEGER not null, "NAME" VARCHAR not null, primary key ("PERSON_ID"))')
curs.execute("insert into PERSON values (1, 'John')")
curs.execute("select * from PERSON")
data = curs.fetchall()
print(data)
Run Code Online (Sandbox Code Playgroud)

因此,每当我收到错误时:Process finished with exit code -1073741819 (0xC0000005) 您对此案件有任何想法吗?或者也许还有其他东西我可以使用而不是jaydebeapi

h2 python-2.7 jaydebeapi

7
推荐指数
2
解决办法
7876
查看次数

通过Python中的JayDeBeApi JDBC连接到DB2

我一直在努力通过OSX(maveriks)上的Python客户端连接到DB2.一个有效的选项似乎是使用JayDeBeApi,但运行以下代码...

import jaydebeapi
import jpype

jar = '/opt/IBM/db2/V10.1/java/db2jcc4.jar' # location of the jdbc driver jar
args='-Djava.class.path=%s' % jar
jvm = jpype.getDefaultJVMPath()
jpype.startJVM(jvm, args)

jaydebeapi.connect('com.ibm.db2.jcc.DB2Driver',
'jdbc:db2://server:port/database','myusername','mypassword')
Run Code Online (Sandbox Code Playgroud)

我会收到以下错误

Traceback (most recent call last):
  File "<pyshell#67>", line 2, in <module>
    'jdbc:db2://server:port/database','myusername','mypassword')
  File "/Library/Python/2.7/site-packages/jaydebeapi/dbapi2.py", line 269, in connect
    jconn = _jdbc_connect(jclassname, jars, libs, *driver_args)
  File "/Library/Python/2.7/site-packages/jaydebeapi/dbapi2.py", line 117, in _jdbc_connect_jpype
    return jpype.java.sql.DriverManager.getConnection(*driver_args)
com.ibm.db2.jcc.am.SqlSyntaxErrorExceptionPyRaisable: com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][t4][10205][11234][3.63.123] Null userid is not supported. ERRORCODE=-4461, SQLSTATE=42815
Run Code Online (Sandbox Code Playgroud)

所以基本上我连接到服务器,但由于某种原因我没有使用提供的用户名和密码.关于如何正确传递用户名和密码的任何想法?我无法准确找到这个问题的进一步说明,欢迎提出任何建议或提示.

python db2 jdbc jaydebeapi

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

使用 JPype - 如何访问 JDBC 元数据函数

我正在使用JayDeBeAPI,它使用 JPype 加载 FileMaker 的 JDBC 驱动程序并提取数据。

但我也希望能够获得数据库中所有表的列表。

JDBC 文档(第 55 页)中,列出了以下函数:

JDBC 客户端驱动程序支持以下元数据功能:

获取列

获取列权限

获取元数据

获取类型信息

获取表

获取表类型

我有什么想法可以从 JPype 或 JayDeBeAPI 调用它们吗?

如果有帮助,这是我当前的代码:

import jaydebeapi
import jpype

jar = r'/opt/drivers/fmjdbc.jar'
args='-Djava.class.path=%s' % jar
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path, args)

conn = jaydebeapi.connect('com.filemaker.jdbc.Driver',
        SETTINGS['SOURCE_URL'], SETTINGS['SOURCE_UID'], SETTINGS['SOURCE_PW'])
curs = conn.cursor()

#Sample Query:
curs.execute("select * from table")
result_rows = curs.fetchall()
Run Code Online (Sandbox Code Playgroud)

更新:

这是一些进展,看起来应该可以工作,但我收到以下错误。有任何想法吗?

> conn.jconn.metadata.getTables()
*** RuntimeError: No matching overloads found. at src/native/common/jp_method.cpp:121
Run Code Online (Sandbox Code Playgroud)

python jdbc jpype jaydebeapi

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

使用jaydebeapi获取列名

我如何在jaydebeapi中执行以下操作?

#In Java
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
String columnName = rsmd.getColumnName(0) ## basically i am interested with this part
Run Code Online (Sandbox Code Playgroud)

python jaydebeapi

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

JPype和JayDeBeAPI返回jpype._jclass.java.lang.Long

我在PySpark中使用JayDeBeAPI(Apache Spark Python API),这是我的代码的开头(注意,我实际上是通过PySpark的交互式shell运行所有这些).

import jaydebeapi
import jpype

conn = jaydebeapi.connect('org.apache.phoenix.jdbc.PhoenixDriver',
                  ['jdbc:phoenix:hostname', '', ''])
Run Code Online (Sandbox Code Playgroud)

我正在查询Apache Phoenix,它是Apache HBase的SQL"前端".

这是我的SQL查询的Python代码:

curs = conn.cursor()
curs.execute('select "username",count("username") from "random_data" GROUP BY "username"')
curs.fetchall()
Run Code Online (Sandbox Code Playgroud)

我得到的输出对于所有行都是这样的:

(u'Username', <jpype._jclass.java.lang.Long object at 0x25d1e10>)
Run Code Online (Sandbox Code Playgroud)

如何修复它以便它实际显示返回列(count列)的值?

Apache Phoenix数据类型页面,count列的数据类型是BIGINT,它被映射到java.lang.Long,但由于某种原因jpype不显示结果.

python setup.py install当我下载它时,我得到JayDeBeAPI 0.1.4和JPype 0.5.4.2 .

python jdbc jpype apache-spark jaydebeapi

3
推荐指数
2
解决办法
4383
查看次数

JayDeBeApi 触发 java.sql.SQLException:找不到合适的驱动程序

我正在尝试使用JayDeBeApi包在Python 3 中连接到Teradata数据库。这是使用FlaskFlask-Restplus的 API 项目的一部分

这是重现该问题的最小工作示例。在终端窗口中,键入以下命令来设置您的工作站:

# Install JVM
sudo apt-get install default-jre

# Create Python virtual environment
sudo apt-get install python3-venv
python3 -m venv jdbc
source jdbc/bin/activate

# Install Python packages in virtual environment
pip3 install --upgrade pip
pip3 install jaydebeapi
pip3 install flask
Run Code Online (Sandbox Code Playgroud)

使用以下内容创建文件 app.py:

from flask import Flask
import jaydebeapi

app = Flask(__name__)


def get_jdbc_connection():
    connection = jaydebeapi.connect(
        'com.teradata.jdbc.TeraDriver',
        'jdbc:teradata://edw-dev.company.org',
        {'user': 'LOGIN', 'password': 'PASSWORD', 'tmode': 'TERA', …
Run Code Online (Sandbox Code Playgroud)

python jdbc teradata flask jaydebeapi

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

在Mac OS 10.14.2的Python 3.7中安装JPype1时出错

在系统中安装JPype1时出现错误。我正在使用Python 3.7。JPype1是Jaydebeapi的依赖项。

pip install Jpype1
Run Code Online (Sandbox Code Playgroud)

以下是错误消息:

    收集jpype1
    使用缓存 
    https://files.pythonhosted.org/packages/c4/4b/60a3e63d51714d4d7ef1b1efdf84315d118a0a80a5b085bb52a7e2428cdc/JPype1-0.6.3.tar.gz
    用于收集包裹的建筑轮子:jpype1
      正在运行setup.py bdist_wheel for jpype1 ...错误
      从命令/ Users / citius / anaconda3 / bin / python -u -c“ import setuptools,tokenize; __ file __ ='/ private / var / folders / kw / ykkdj1vn7qj_2hms02xmtz6h0000gn / T / pip-install-1rreficl / jpype1 / setup的完整输出。 py'; f = getattr(tokenize,'open',open)(__ file __); code = f.read()。replace('\ r \ n','\ n'); f.close(); exec( compile(code,__file__,'exec'))“ bdist_wheel -d / private / var / folders / kw / ykkdj1vn7qj_2hms02xmtz6h0000gn / T …

python ios python-3.x jpype jaydebeapi

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

从 Python 应用程序创建 MS Access 数据库

我正在使用 Python 并通过 JayDeBeApi 库与 MS Access 数据库进行交互。一切正常,我可以创建表格,除了文件 *.accdb 之外的所有内容都需要事先在 MS Access 软件中创建

有没有办法通过我的 Python 代码动态创建 *.accdb 文件?

python database ms-access jaydebeapi

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