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())

⚠️ 需要安装 pandas 和 google-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://test.idctop.com/article/476569.html

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

相关推荐

  • 谷歌数字营销顾问具体做什么?谷歌数字营销顾问工作内容详解

    谷歌数字营销顾问的核心工作是通过数据分析、SEO优化、SEM竞价管理及内容策略,帮助企业提升品牌曝光并实现精准获客,其本质是连接技术与商业目标的桥梁,谷歌数字营销顾问的核心职责拆解很多人对谷歌数字营销顾问存在误解,认为他们只是负责“投广告”的人,这个角色的工作远不止于此,它是一个综合性的策略执行者,需要同时兼顾……

    2026年7月1日
    1610
  • 华为弹性云服务器的CPU型号有哪些,怎么选择配置?

    华为弹性云服务器(ECS)的CPU核心选项主要分为基于鲲鹏920处理器的ARM架构与基于Intel Xeon和AMD EPYC处理器的x86架构两大类,具体型号涵盖鲲鹏920、Intel Xeon Gold/Platinum系列以及AMD EPYC 7系列等,华为自研的鲲鹏处理器在性价比与国产化适配方面表现突出……

    2026年8月6日
    500
  • python replace怎么用?python replace替换字符串方法

    Python中的replace()方法用于替换字符串中的指定子串,若需替换所有出现次数应设置count参数为-1或不传参,若需替换指定次数则传入具体整数,该操作返回新字符串而不修改原对象,在Python编程的日常实践中,字符串处理是开发者最高频接触的场景之一,无论是清洗爬虫获取的脏数据,还是格式化用户输入的文本……

    2026年7月6日
    13600
  • 服务器已升级为最新版本,服务器升级后需要注意什么?

    本次服务器架构调整已圆满结束,服务器已升级为高性能企业级集群架构,实现了计算能力、数据吞吐量与安全防护能力的全面跃升,此次升级直接解决了旧系统在高峰期响应延迟、并发处理瓶颈及数据安全隔离等核心痛点,网站平均加载速度提升300%,并发承载能力扩大5倍,为业务连续性与用户体验提供了坚实的底层技术保障, 硬件架构重构……

    2026年3月31日
    9100
  • 常用的web服务器端软件有哪些,哪个最好用?

    常见的Web服务器端软件主要包括Apache HTTP Server、Nginx、Tomcat、IIS以及Lighttpd等,它们各自承担不同的请求处理逻辑,选择时需结合业务场景、并发需求和技术栈来决定,主流Web服务器软件详解Apache HTTP Server:老牌稳定的通用型选手Apache从1995年诞……

    服务器运维 2026年8月9日
    400
  • 个人电脑能当云服务器用吗,个人电脑搭建云服务器教程

    个人电脑完全可以通过特定软件转化为云服务器,但这主要适用于家庭实验室或临时测试场景,并不适合承载对稳定性要求极高的商业生产环境,很多人对“云服务器”的理解存在误区,认为必须向阿里云、腾讯云等大厂购买昂贵的实例才算拥有,利用闲置的个人电脑搭建私有云或家庭服务器,是极客和开发者中非常流行的玩法,这种方案不仅能让你完……

    服务器运维 2026年5月27日
    7100
  • 服务器怎么开启公网?公网IP配置方法详解

    服务器开启公网访问的核心在于获取公网IP地址并正确配置网络端口映射与安全防护策略,整个过程必须遵循“先路由、后端口、再防护”的逻辑顺序,确保网络链路通畅且系统安全可控,实现服务器公网访问,本质上是在公网IP与服务器内网IP之间建立一条可双向通信的链路,绝大多数企业级应用或个人服务部署,都绕不开这一基础网络配置环……

    2026年3月15日
    13400
  • 哪些软件能建IPTV服务器?免费的有哪些

    能够搭建IPTV服务器的软件包括流媒体服务器软件如Plex、Emby、Jellyfin,以及专业IPTV后端如TVheadend、Minisatip,选择哪款取决于你的技术水平、直播源格式和体验需求,主流IPTV服务器软件对比与选型开源软件:控制力强,成本低Jellyfin:全平台开源流媒体Jellyfin是E……

    2026年8月23日
    000
  • 服务器提示计算机内存不足怎么办?如何快速解决?

    服务器提示计算机内存不足,本质上是系统资源供需失衡的警报,意味着运行进程所需的内存空间超过了物理内存与虚拟内存的总和,直接导致服务响应迟缓甚至崩溃,解决这一问题的核心路径在于“诊断释放、扩容优化、架构升级”三步走策略,而非单纯的硬件堆砌,立即排查异常进程并释放内存是止损的关键,而长期的系统调优与架构扩展才是根本……

    2026年3月11日
    12500
  • 服务器租用到底有哪些好处,哪家性价比高?

    租用服务器最大的好处在于,你只需按需付费就能获得企业级硬件和运维服务,彻底省去自建机房的高昂成本和技术门槛,很多创业者和中小企业主在选择IT基础设施时,都会纠结是自购服务器、托管还是直接租用,从实际运营角度看,租用服务器在成本控制、运维效率、业务弹性上具备明显优势,尤其适合预算有限且追求快速上线的场景,服务器租……

    2026年8月5日
    400

发表回复

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