gpt4 book ai didi

sqlite - 从Jython读取sqlite数据库

转载 作者:行者123 更新时间:2023-12-03 16:24:35 26 4
gpt4 key购买 nike

我正在尝试运行here发布的jython sqlite示例。

################################################################################
#
# sqlite_using_ziclix - An example of using the Python DB-API 2.0 compliant
# ziclix implementation to interact with a SQLite database.
# Creates a 'planet' table in a SQLite database
# named 'solarsys.db', populates it with some data and
# then executes a query to retrieve data from that table.
#
# Works with Jython 2.5, must have the zentus sqlitejdbc.jar in your
# CLASSPATH at execution time.
# Known to work with sqlitejdbc-v056.jar
#
################################################################################

import sys

from com.ziclix.python.sql import zxJDBC

################################################################################

DATABASE = "solarsys.db"
JDBC_URL = "jdbc:sqlite:%s" % DATABASE
JDBC_DRIVER = "org.sqlite.JDBC"

TABLE_NAME = "planet"
TABLE_DROPPER = "drop table if exists %s;" % TABLE_NAME
TABLE_CREATOR = "create table %s (name, size, solar_distance);" % TABLE_NAME
RECORD_INSERTER = "insert into %s values (?, ?, ?);" % TABLE_NAME
PLANET_QUERY = """
select name, size, solar_distance
from %s
order by size, solar_distance desc
""" % TABLE_NAME

PLANET_DATA = [('mercury' , 'small' , 57), # distance in million kilometers
('venus' , 'small' , 107),
('earth' , 'small' , 150),
('mars' , 'small' , 229),
('jupiter' , 'large' , 777),
('saturn' , 'large' , 888),
('uranus' , 'medium', 2871),
('neptune' , 'medium', 4496),
('pluto' , 'tiny' , 5869),
]

################################################################################

def main():
dbConn = getConnection(JDBC_URL, JDBC_DRIVER)
cursor = dbConn.cursor()
try:
cursor.execute(TABLE_DROPPER)
cursor.execute(TABLE_CREATOR)
except zxJDBC.DatabaseError, msg:
print msg
sys.exit(1)

try:
cursor.executemany(RECORD_INSERTER, PLANET_DATA)
dbConn.commit()
except zxJDBC.DatabaseError, msg:
print msg
sys.exit(2)

try:
cursor.execute(PLANET_QUERY)
for row in cursor.fetchall():
name, size, dist = row[:]
print "%-16.16s %-8.8s %4d" % (name, size, dist)
except zxJDBC.DatabaseError, msg:
print msg
sys.exit(3)

cursor.close()
dbConn.close()
sys.exit(0)

################################################################################

def getConnection(jdbc_url, driverName):
"""
Given the name of a JDBC driver class and the url to be used
to connect to a database, attempt to obtain a connection to
the database.
"""

try:
# no user/password combo needed here, hence the None, None
dbConn = zxJDBC.connect(jdbc_url, None, None, driverName)
except zxJDBC.DatabaseError, msg:
print msg
sys.exit(-1)

return dbConn

################################################################################
################################################################################

if __name__ == '__main__':
main()


这要求 org.sqlite.JDBC可用,因此我下载了jar文件并将其放在当前目录中。然后我尝试用

jython -Dpython.path=.:sqlitejdbc-v056.jar ./db.py 


但是我收到一个找不到类的错误:

java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: org.sqlite.JDBC


如何运行此示例?

最佳答案

我只是尝试设置CLASSPATH环境变量

export CLASSPATH=`pwd`/sqlitejdbc-v056.jar
jython ./db.py


而且有效。

关于sqlite - 从Jython读取sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com