作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试通过 Python 2.7.13 运行 AWS Athena SQL 查询并遵循以下两个选项,但在这两种情况下都出现了“python.exe 停止工作”错误。我是 python 的新手,非常感谢任何帮助。
选项 1:尝试使用 Pyathenajdbc
>>> from pyathenajdbc import connect
>>> import pandas as pd
>>> conn = connect(access_key='<acess_key>',
secret_key='<secret_key>',
s3_staging_dir='s3://Test/',
region_name='<region_name>',
jvm_path='C:\\Program Files (x86)\\Java\\jre6\\bin\\client\\jvm.dll')
>>> df = pd.read_sql("select * from test.test45 LIMIT 1", conn)
方案二:尝试使用jaydebeapi还是一样的错误
使用 Microsoft Visual Studio 进行 Python 调试时的错误消息
python.exe 中 0x00170000 处的未处理异常:0xC0000005:访问冲突。
最佳答案
JayDeBeApi 太复杂,无法使用 Athena JDBC 进行调整,PyAthenajdbc 更易于使用。这就是我使用它的方式,它就像一个魅力!
import os
import configparser
import pyathenajdbc
# Get aws credentials
aws_config_file = '~/.aws/config'
Config = configparser.ConfigParser()
Config.read(os.path.expanduser(aws_config_file))
access_key_id = Config['default']['aws_access_key_id']
secret_key_id = Config['default']['aws_secret_access_key']
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
log_path = BASE_DIR + "/lib/static/queries.log"
class PyAthenaLoader():
def connecti(self):
self.conn = pyathenajdbc.connect(
s3_staging_dir="s3://athena",
access_key=access_key_id,
secret_key=secret_key_id,
region_name="us-east-1",
log_path=log_path,
)
def databases(self):
dbs = self.query("show databases;")
return dbs
def tables(self, database):
tables = self.query("show tables in {0};".format(database))
return tables
def query(self, req):
self.connecti()
try:
with self.conn.cursor() as cursor:
cursor.execute(req)
res = cursor.fetchall()
except Exception as X:
return X
finally:
self.conn.close()
return res
athena = PyAthenaLoader()
res = athena.query('SELECT * from shadow.sales;')
print(res)
关于Python 连接到 AWS Athena 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354388/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!