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://test.idctop.com/article/476569.html

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

相关推荐

  • 服务器屏蔽ip地址范围怎么设置,服务器如何屏蔽ip地址段

    服务器屏蔽IP地址范围是维护网络资源安全、保障服务稳定运行的核心防御手段,其本质在于通过精准的访问控制策略,将恶意流量、非法访问及潜在攻击拒之门外,这一机制的有效性直接取决于IP范围界定的精准度与规则配置的科学性,为何必须实施IP地址范围屏蔽网络环境日益复杂,服务器面临的威胁呈现出多样化、自动化的特征,单一的防……

    2026年4月5日
    8400
  • 服务器怎么泛绑定?泛绑定域名详细操作步骤

    服务器泛绑定的核心在于利用通配符(*)配置Web服务软件,使单一IP地址能够响应无数个域名的访问请求,其本质是“匹配优先级”逻辑的应用,通过在Nginx的server_name指令或Apache的ServerAlias字段中设置通配符,服务器将自动捕获所有未被特定虚拟主机明确绑定的域名请求,从而极大简化了多站点……

    2026年3月16日
    12100
  • 个人域名dns解析怎么设置?域名dns解析教程

    个人域名DNS解析的核心在于将域名指向服务器IP,通过配置A记录或CNAME记录实现访问,关键在于选择稳定服务商并正确设置TTL值以平衡解析速度与缓存更新,很多刚入手域名的朋友,往往觉得DNS解析是个黑盒,填几个数字就完事了,这就像给你的房子挂门牌号,只有牌号挂对了,快递(流量)才能准确送到你家门口,对于个人站……

    2026年6月12日
    6000
  • 服务器属于计算机吗?服务器和普通电脑有什么区别

    服务器绝对属于计算机,它是计算机的一种高端、专业化形态,从计算机科学的基础定义来看,服务器具备了计算机系统的核心要素——运算器、控制器、存储器和输入输出设备,其本质依然是对数据进行处理和响应的电子设备,不同于普通个人电脑(PC),服务器是为了在网络环境中提供计算服务、资源共享和数据管理而专门设计的高性能计算机……

    2026年4月10日
    7200
  • git如何查看上传给服务器的文件格式,有哪些方法?

    要查看Git上传到服务器的文件格式,最直接的方法是用git ls-tree -r HEAD –name-only命令递归列出所有文件,再对后缀名进行归类统计,很多人只知道用git push把代码推上去,却很少关心远程仓库里到底存了哪些类型的文件,无论你是做代码审查、清理非必要文件,还是想确认项目结构是否规范……

    2026年7月24日
    600
  • 哪里能下载服务器直播软件?专业服务器直播平台安装包获取

    服务器直播软件下载与专业部署指南服务器直播软件(流媒体服务器软件) 是构建专业直播平台的核心引擎,它负责接收主播端的音视频流(推流),进行高效处理(如转码、录制、截图、协议转换),并将处理后的流分发至大量观众端(拉流),常见的开源及商业解决方案包括:SRS (Simple RTMP Server):国产优秀开源……

    2026年2月9日
    12530
  • 高级数据开发是做什么的?高级数据开发薪资待遇好吗

    2026年高级数据开发的核心壁垒在于从单纯的数据搬运工跃迁为业务增长引擎,通过AI驱动的智能化数仓架构与实时计算,实现数据资产的高效变现,2026高级数据开发的核心能力演进从T+1到实时智能的范式转移传统T+1批处理模式已无法适应当下秒级决策的商业环境,根据中国信通院2026年最新报告,超78%的头部企业已将核……

    2026年4月26日
    5900
  • 个人博客选虚拟主机怎么选?个人博客虚拟主机推荐

    优先选择支持SSD存储、提供独立IP且具备国内ICP备案支持的轻量级主机,而非盲目追求高性能服务器或廉价共享空间,搭建个人博客看似简单,实则是一场关于稳定性、速度与安全性的平衡艺术,许多新手博主在起步阶段容易陷入两个极端:要么为了省钱选择毫无保障的免费空间,导致网站随时宕机;要么盲目追求顶级配置,结果在闲置中浪……

    2026年6月12日
    3400
  • 方舟有哪些mod不需要服务器?, 方舟mod哪些不需要服务器

    开篇直接给答案方舟生存进化中,所有纯客户端模组、单人模式下的地图模组以及通过非专用主机联机时加载的模组,都不需要额外架设专用服务器, 如果你只是想自己摸索模组玩法,或者偶尔拉上两三个朋友一起玩,完全不必花冤枉钱去租独立服务器,哪些模组可以脱离服务器运行第一类:纯客户端优化模组这类模组只修改本地文件,不干扰服务器……

    2026年8月5日
    900
  • ftp并发服务器如何搭建,有哪些常见问题?

    FTP并发服务器是支持多用户同时文件传输的核心,合理配置能显著提升企业效率, 在选择方案时,需要结合并发需求、传输性能和成本预算,确保系统稳定运行,下面从设置、性能、价格和场景几个方面拆解,帮你快速掌握关键点,FTP并发服务器怎么设置才能高效基础配置步骤选择FTP软件,例如vsftpd(Linux环境)或Fil……

    2026年8月2日
    200

发表回复

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