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年2月6日
    12500
  • 服务器显示器屏幕尺寸是多少,服务器显示器尺寸一般多大合适

    选择服务器显示器的最佳规格需要在物理空间、分辨率需求和操作员舒适度之间取得精确平衡,核心结论是:对于现代服务器管理,17英寸至22英寸是最佳尺寸范围,其中19英寸和21.5英寸分别代表了机架安装和独立式显示器的最佳平衡点,盲目追求大尺寸反而会降低运维效率并浪费宝贵的机架空间,在确定服务器显示器屏幕尺寸时,管理员……

    2026年2月23日
    15200
  • 服务器怎么不能远程桌面,远程桌面连接不上是什么原因?

    服务器无法远程桌面连接,核心原因通常集中在网络连通性中断、远程服务配置错误、防火墙策略拦截或安全认证失败这四个维度,解决问题的关键在于由外而内、由网络到服务的逐层排查,优先检测物理链路与端口可达性,再审查系统服务状态与安全策略,最后排查用户权限与客户端配置,绝大多数连接故障均可通过此流程定位并修复, 网络连通性……

    2026年3月23日
    12000
  • 规则引擎如何赋能精准营销?规则引擎系统在精准营销的应用

    规则引擎系统通过实时解析用户行为与静态画像,将营销决策从“人工经验驱动”升级为“自动化规则执行”,从而在精准营销中实现千人千面的个性化触达,显著提升转化率并降低运营成本,在数字化营销的深水区,企业面临的痛点往往不是缺乏数据,而是无法在毫秒级时间内对海量数据做出正确反应,传统的营销方式依赖人工配置活动页面或手动筛……

    2026年7月6日
    10000
  • 防火墙syslog日志服务器

    防火墙 Syslog 日志服务器:网络安全的“黑匣子”与智能中枢防火墙是网络边界的关键守卫,但它的价值远不止于实时拦截威胁,防火墙生成的 Syslog 日志,是记录其所有决策、事件和状态的宝贵“黑匣子”数据,专业的防火墙 Syslog 日志服务器是集中收集、安全存储、高效分析这些海量日志数据的核心基础设施,它通……

    2026年2月5日
    11800
  • 高维数据数据可视化怎么做?高维数据可视化工具推荐

    面对动辄成百上千维度的复杂数据集,2026年最前沿的高维数据数据可视化方案,是通过降维投影、交互探索与AI语义映射的深度融合,将隐秘特征转化为可直觉感知的视觉图谱,彻底破解维度灾难,破局维度灾难:高维可视化的底层逻辑为何传统二维图表全面失效?当特征空间突破三维物理限制,传统散点图与折线图便陷入“维度灾难”,数据……

    2026年4月24日
    5500
  • 个人为何不能注册cn域名?个人注册cn域名需要什么条件

    个人确实无法直接以自然人身份注册.cn域名,必须通过具有资质的域名注册商,使用营业执照或身份证等有效证件完成实名认证后方可申请,政策红线背后的注册门槛解析在域名注册的江湖里,.cn作为中国的国家顶级域名,其管理权掌握在CNNIC(中国互联网络信息中心)手中,这里有一条铁律:域名持有者必须通过实名认证,对于个人而……

    2026年6月19日
    2900
  • 个人可以做动态域名解析吗?如何设置DDNS

    个人完全可以通过自建DDNS服务或购买低成本云解析服务,实现动态域名解析,将家庭宽带或移动IP映射为可访问的固定域名,从而搭建个人NAS、远程桌面或监控中心,很多人认为动态域名解析(DDNS)是企业的专属技术,需要昂贵的服务器和复杂的网络配置,随着家庭宽带公网IP的普及以及各类轻量级解析服务的成熟,个人用户也能……

    2026年6月12日
    3300
  • 服务器按使用流量计费划算吗?服务器流量计费方式详解

    服务器按使用流量计费模式,核心在于为业务波动大、带宽利用率低的场景提供了极具性价比的成本控制方案,这种计费方式打破了传统固定带宽的限制,将企业的IT基础设施支出与实际业务负载动态绑定,实现了资源的精细化管理,对于流量波峰波谷明显、日均带宽利用率低于30%的业务而言,选择按流量计费是降低运营成本的最优解,按流量计……

    2026年3月14日
    9400
  • 服务器有装固态硬盘吗,服务器装固态硬盘和机械硬盘哪个好

    绝大多数现代服务器都已经配置了固态硬盘(SSD),并且在高性能计算场景中,SSD已成为不可或缺的标准组件,对于很多用户关心的服务器有装固态硬盘吗这个问题,答案是肯定的,且随着存储技术的迭代,固态硬盘在服务器领域的应用率已超过70%,服务器不再单纯依赖机械硬盘(HDD),而是通过SSD与HDD的混合架构或全闪存阵……

    2026年2月20日
    13300

发表回复

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