我正在尝试建立从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?
我一直在努力通过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)
所以基本上我连接到服务器,但由于某种原因我没有使用提供的用户名和密码.关于如何正确传递用户名和密码的任何想法?我无法准确找到这个问题的进一步说明,欢迎提出任何建议或提示.
我正在使用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) 我如何在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) 我在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 .
我正在尝试使用JayDeBeApi包在Python 3 中连接到Teradata数据库。这是使用Flask和Flask-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) 在系统中安装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 并通过 JayDeBeApi 库与 MS Access 数据库进行交互。一切正常,我可以创建表格,除了文件 *.accdb 之外的所有内容都需要事先在 MS Access 软件中创建
有没有办法通过我的 Python 代码动态创建 *.accdb 文件?
jaydebeapi ×8
python ×7
jdbc ×4
jpype ×3
apache-spark ×1
database ×1
db2 ×1
flask ×1
h2 ×1
ios ×1
ms-access ×1
python-2.7 ×1
python-3.x ×1
teradata ×1