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年3月29日
    8500
  • 服务器带宽和存储有什么区别?服务器配置如何选择

    服务器性能的瓶颈往往不在于计算能力,而在于服务器带宽和存储的配置是否均衡,带宽决定了数据的传输速度与并发能力,存储决定了数据的容量、安全性与读取效率,二者如同高速公路的车道数量与服务区的仓库大小,缺一不可,构建高性能、高可用的业务系统,核心在于根据业务类型(I/O密集型或数据密集型)精准匹配带宽与存储资源,避免……

    2026年4月10日
    6600
  • 个人网站ICP备案网怎么办理?个人网站ICP备案流程详解

    个人网站ICP备案是合法运营中国大陆服务器的必要门槛,核心在于通过接入商提交真实主体信息,通常耗时3-20个工作日不等,具体取决于服务商审核效率及地区通信管理局的复核速度,很多刚入手域名和虚拟主机的个人站长,面对“ICP备案”这四个字往往一头雾水,这并非什么高深莫测的技术难题,而是一套标准化的行政登记流程,随着……

    服务器运维 2026年5月25日
    3900
  • Python海涵是什么意思?Python海涵用法详解

    Python海涵并非单一软件,而是指代以Python语言为核心构建的开源生态系统,其核心价值在于通过丰富的第三方库(如NumPy、Pandas、Django)实现从数据科学到Web开发的全场景覆盖,且完全免费开源,无需购买商业授权,在2026年的技术语境下,提到“Python海涵”,我们指的不再仅仅是那门语法简……

    2026年7月8日
    13200
  • 如何配置管理服务器?2026最新服务器教程视频

    服务器配置与管理教程视频服务器配置与管理教程视频是系统化掌握服务器全生命周期运维技能的动态学习路径,通过直观演示将复杂命令、策略配置与故障排除转化为可实践的操作指南,硬件配置与初始化:为稳定运行奠基服务器开箱与硬件组装: 视频清晰展示机架安装、电源线缆、网络接口(1GbE/10GbE)、硬盘托架(SATA/SA……

    2026年2月11日
    13210
  • 个人域名超过5个怎么办?个人域名备案数量限制

    个人域名超过5个不仅不会分散权重,反而能构建多元化的数字资产护城河,关键在于区分“核心品牌站”与“场景测试站”,避免重复建设导致的内部竞争,在2026年的搜索引擎生态中,百度算法已经彻底告别了简单的关键词堆砌时代,转向对用户意图、内容深度以及网站权威性的综合考量,许多站长依然停留在“一个域名对应一个网站”的传统……

    2026年6月4日
    6400
  • 个人工作室的网站怎么建?个人工作室网站制作费用

    个人工作室网站的核心价值在于通过精准的品牌定位与极简的转化路径,将流量高效转化为高净值客户,而非仅仅作为一个在线名片存在,在2026年的数字营销环境中,流量红利见顶,获客成本飙升,个人工作室面临着前所未有的生存挑战,传统的“有网站就行”的观念已经过时,现在的用户更倾向于寻找那些能直接解决痛点、展示专业深度且交互……

    2026年6月7日
    3700
  • 服务器密码自动设置方法,服务器密码自动配置如何操作

    服务器密码自动管理是保障系统安全、提升运维效率的核心手段,尤其在云环境与多服务器场景下,已成为企业数字化转型的必备能力,为何必须实现服务器密码自动管理?人为管理风险高据Verizon《2023年数据泄露报告》,83%的安全事件涉及凭证泄露或滥用;运维人员手写密码本、共享Excel表格,极易造成密码外泄、重复使用……

    2026年4月14日
    5800
  • 个人小程序数据库开发框架是什么?主流框架选型对比

    个人小程序数据库开发框架通常指基于Serverless架构的轻量级后端服务,如微信云开发或阿里云小程序云,其核心优势在于免运维、快速集成与按需付费,适合个人开发者低成本构建数据驱动型应用,对于个人开发者而言,传统的前后端分离模式往往意味着要处理服务器配置、域名备案、SSL证书部署以及复杂的数据库连接问题,这些技……

    2026年5月30日
    4700
  • 服务器很吵怎么办?服务器噪音大如何处理

    服务器噪音问题主要源于风扇高速旋转、机械硬盘读写震动以及机箱共振,通过优化散热系统、更换静音配件、调整安装环境,可以有效降低噪音,保障设备稳定运行的同时改善工作环境,精准定位噪音源头解决噪音问题的第一步是准确识别来源,服务器噪音并非单一成因,不同组件产生的声音特征各异,风扇高速旋转噪音这是服务器运行噪音的主要来……

    2026年3月24日
    11600

发表回复

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