BigQuery Python怎么连接?BigQuery Python连接数据库代码

在 Python 中使用 BigQuery 通常是通过 Google 官方提供的客户端库 google-cloud-bigquery 来实现的,以下是使用 Python 连接 BigQuery 并执行常见操作的完整指南:


✅ 1. 安装依赖

pip install google-cloud-bigquery

✅ 2. 认证方式

BigQuery 使用 Google Cloud 认证,推荐方式:

TRAE 中使用python安装总结
加载中
TRAE 中使用python安装总结

使用服务账号密钥文件(推荐用于生产环境)

  1. 在 Google Cloud Console 中创建一个服务账号。
  2. 下载 JSON 密钥文件。
  3. 设置环境变量:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your-service-account-file.json"

使用本地 gcloud CLI 认证(适合开发环境)

gcloud auth application-default login

✅ 3. 基本使用示例

1 初始化客户端

from google.cloud import bigquery
# 自动从环境变量或默认凭据加载认证信息
client = bigquery.Client()

2 列出所有数据集

datasets = list(client.list_datasets())
print("Datasets in project:", [ds.dataset_id for ds in datasets])

3 查询数据

BigQuery Python怎么连接?BigQuery Python连接数据库代码

query = """ SELECT name, COUNT() as count FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE state = 'TX' GROUP BY name ORDER BY count DESC LIMIT 10 """ # 执行查询 query_job = client.query(query) results = query_job.result() # 等待查询完成 # 打印结果 for row in results: print(f"{row.name}: {row.count}")

4 将查询结果保存为 DataFrame(可选)

import pandas as pd
df = query_job.to_dataframe()
print(df.head())

⚠️ 需要安装 pandasgoogle-cloud-bigquery[pandas]

5 创建表并加载数据

from google.cloud import bigquery
client = bigquery.Client()
# 定义表 ID
table_id = "your-project.your_dataset.your_table"
# 创建表配置
schema = [
    bigquery.SchemaField("name", "STRING"),
    bigquery.SchemaField("age", "INTEGER"),
]
table = bigquery.Table(table_id, schema=schema)
table = client.create_table(table)  # 创建表
print(f"Created table {table.project}.{table.dataset_id}.{table.table_id}")

6 插入数据

rows = [
    ("Alice", 30),
    ("Bob", 25),
    ("Charlie", 35),
]
errors = client.insert_rows_json(table_id, rows)
if errors == []:
    print("Successfully inserted rows.")
else:
    print("Errors:", errors)

BigQuery Python怎么连接?BigQuery Python连接数据库代码

7 删除表

client.delete_table(table_id, delete_contents=True)
print(f"Deleted table {table_id}")

✅ 4. 高级用法

1 使用标准 SQL 参数化查询

query = """
SELECT 
FROM `your-project.your_dataset.your_table`
WHERE age > @min_age
"""
query_params = [
    bigquery.ScalarQueryParameter("min_age", "INTEGER", 25)
]
job_config = bigquery.QueryJobConfig(query_parameters=query_params)
query_job = client.query(query, job_config=job_config)
results = query_job.result()
for row in results:
    print(row)

2 分页查询

query_job = client.query("SELECT  FROM `your-project.your_dataset.your_table`")
results = query_job.result(page_size=100)  # 每页100条
for page in results.pages:
    for row in page:
        print(row)

3 异步查询

from google.cloud import bigquery
client = bigquery.Client()
query = "SELECT  FROM `bigquery-public-data.usa_names.usa_1910_current` LIMIT 100"
query_job = client.query(query)
# 异步获取结果
results = query_job.result()  # 阻塞直到完成
for row in results:
    print(row)

BigQuery Python怎么连接?BigQuery Python连接数据库代码


✅ 5. 最佳实践

实践 说明
使用参数化查询 防止 SQL 注入,提高性能
限制查询范围 使用 LIMIT 或分区表减少扫描数据量
使用分区/聚类表 提高查询效率,降低成本
监控查询成本 使用 query_job.total_bytes_processed 监控数据扫描量
使用连接池/复用客户端 避免频繁创建客户端实例

✅ 6. 常见问题

Q: 认证失败?

  • 确保 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向正确的 JSON 文件。
  • 或使用 gcloud auth application-default login

Q: 查询超时?

  • 增加 job_config.timeout_ms 或检查查询是否扫描了大量数据。

Q: 权限不足?

  • 确保服务账号具有 BigQuery Data Viewer 或更高权限。

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/476569.html

(0)
Python和C++怎么调用?Python和C++调用方法有什么区别
上一篇 2026年7月9日 22:18
linux开机自检报错怎么解决?linux系统开机自检失败原因
下一篇 2026年7月9日 22:18

相关推荐

  • 规则与机器学习是什么?规则与机器学习区别

    规则引擎与机器学习并非对立关系,而是互补的协同体系:规则提供确定性的边界与合规性,机器学习负责在复杂场景中挖掘非线性规律与预测能力,二者结合能构建既稳健又智能的决策系统,在数字化转型的深水区,企业往往陷入一个误区:要么过度依赖死板的硬编码规则,导致系统僵化无法应对长尾需求;要么盲目迷信黑盒模型,导致业务逻辑不可……

    2026年7月1日
    800
  • 服务器怎么关端口?Windows和Linux关闭端口方法详解

    关闭服务器端口的核心在于精准定位端口进程并强制终止,或通过防火墙策略阻断流量,防火墙屏蔽法”因其策略的持久性与安全性,被视为生产环境中的首选方案,而“进程终止法”更适合临时调试与应急处理,在深入探讨服务器怎么关端口这一具体操作前,必须明确一个安全原则:关闭端口不仅是技术操作,更是攻击面收敛的安全策略,错误的操作……

    2026年3月21日
    11800
  • 企业为什么需要服务器?服务器对企业有哪些关键作用?

    服务器对于企业而言,已从基础IT设施跃升为驱动数字化转型的核心引擎——其性能、可靠性与扩展能力直接决定企业运营效率、客户体验与市场竞争力,服务器是企业数字化转型的“数字底座”在云计算、大数据、人工智能快速发展的今天,服务器不再只是“存放数据的机器”,而是承载业务逻辑、支撑智能应用、保障数据安全的战略级基础设施……

    2026年4月14日
    7400
  • 服务器怎么做信息转发?服务器信息转发配置教程

    服务器实现信息转发的核心在于精准选择转发协议与架构设计,通过高性能代理软件(如Nginx、HAProxy)或自研转发服务,构建稳定、低延迟的数据传输通道,同时配置严密的安全访问控制策略,确保数据在流转过程中的完整性与机密性,这不仅是技术实现的单一过程,更是对网络拓扑、负载均衡及安全防护的综合考量, 明确业务场景……

    2026年3月20日
    10700
  • 为什么服务器视频播不了?5大原因及解决方案!

    视频在服务器上无法播放通常是由于服务器配置错误、文件损坏、网络问题或编码格式不兼容导致的,解决这些问题需要系统诊断和针对性修复,以确保视频流畅播放,以下是详细分析和专业解决方案,为什么视频在服务器上无法播放?视频播放失败源于多个技术层面,服务器作为存储和传输中枢,任何环节出错都可能中断播放,常见场景包括用户访问……

    服务器运维 2026年2月11日
    13600
  • 高清云终端网络共享主机

    高清云终端网络共享主机是2026年政企办公、教育信创及医疗呼叫场景下,通过虚拟化切片与协议深度优化,实现1台主机共享给多用户独立操作且画质无损的降本增效利器,核心价值:为何取代传统PC成为必然算力冗余与资源重构传统PC日常CPU利用率不足15%,内存与算力长期闲置,高清云终端网络共享主机通过底层虚拟化技术,将单……

    2026年5月5日
    5700
  • hdl和python有什么区别?hdl python结合使用教程

    在2026年的硬件开发语境下,HDL Python并非取代传统Verilog/VHDL的独立语言,而是通过高级综合(HLS)技术,将Python代码自动转化为可综合的硬件描述语言,从而大幅降低FPGA/ASIC开发门槛并提升迭代效率的核心工具链,HDL Python的技术本质与演进逻辑从脚本到硬件的思维跨越传统……

    2026年7月9日
    17700
  • 服务器平台搭建步骤有哪些?服务器平台搭建教程详解

    服务器平台搭建的成功与否,核心取决于基础设施规划的合理性、运行环境的稳定性以及安全配置的严密性,而非单纯依赖硬件性能的堆砌,一个高效、稳定的平台架构,必须遵循标准化的部署流程,从硬件选型到应用上线,每一步都需精确执行,以确保平台具备高可用性与可扩展性, 基础设施规划与硬件选型搭建工作的起点在于精准的需求分析与资……

    2026年4月6日
    8000
  • 服务器有点慢什么原因,服务器卡顿怎么解决?

    服务器响应速度直接决定了用户体验和业务转化率,当服务器出现卡顿或加载缓慢时,通常不是单一故障,而是硬件资源瓶颈、网络传输限制、软件配置低效或外部恶意攻击等多重因素共同作用的结果,要彻底解决这一问题,必须遵循金字塔原理,先定位核心瓶颈,再进行分层优化,排查服务器有点慢什么原因,需要从底层硬件向上层应用逐层分析,结……

    2026年2月17日
    22600
  • 服务器怎么划分vps?详细步骤教程

    服务器划分VPS的核心在于虚拟化技术的选择与资源的合理隔离,通过Hypervisor(虚拟机监视器)在物理服务器上创建多个相互独立的虚拟环境,每个环境拥有独立的操作系统和资源配额,从而实现VPS的创建与管理,这一过程不仅要求对硬件资源有精准的把控,还需要严格的安全配置,以确保各VPS之间的数据隔离与性能稳定,虚……

    2026年3月20日
    10000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注