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

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

相关推荐

  • 服务器强制重启快捷键是什么,服务器死机了怎么强制重启

    服务器强制重启是系统管理员在应对系统死机、无响应等极端故障时的终极手段,其核心操作逻辑在于通过特定的键盘组合指令或硬件管理接口,绕过操作系统层面的阻塞,直接触发硬件级别的复位操作,最核心的结论是:服务器强制重启并非简单的“关机再开机”,而是一套严谨的硬件中断流程,熟练掌握{服务器强制重启快捷键}与带外管理工具的……

    2026年3月24日
    13300
  • 服务器最贵多少钱

    顶级配置价值超1.3亿元核心结论:当下市场上最昂贵的单台服务器系统,其售价可轻松突破1.3亿元人民币(约2000万美元), 这个数字并非凭空想象,而是顶尖性能、极致可靠性与深度定制化共同作用的结果, 硬件成本:性能巅峰的天价基石顶级服务器的硬件配置堪称“不计成本”:极致处理器阵列: 配备数十颗乃至上百颗最新世代……

    服务器运维 2026年2月16日
    22700
  • 如何固化Python代码?,怎么打包exe

    将Python脚本固化成独立可执行文件,最推荐使用PyInstaller,它兼容性好、操作简单,能覆盖绝大多数打包场景,如果看重启动速度或代码保护,可以评估Nuitka或Cython,前者编译为机器码,后者可混合编译,但配置门槛更高,对比主流的python固化工具:哪个好用选工具前先明确需求:只是给同事交个脚本……

    2026年7月21日
    2000
  • 服务器需要主机防护吗?主机安全防护必备方案

    服务器有无主机防护?核心答案直击要害有主机防护: 服务器具备针对操作系统层和应用程序层的实时、深度安全监控与防护能力,能有效主动识别、拦截、响应入侵攻击、恶意软件、异常行为等威胁,显著提升安全基线,是专业安全架构的关键组件,无主机防护: 服务器仅依赖外围防火墙、网络层安全设备或基础安全组策略,面对利用系统漏洞……

    2026年2月13日
    14310
  • 高端网站建设案例有哪些?专业定制网站哪家好

    2026年高端网站建设的核心已从单纯的视觉包装跃升为“品牌资产数字化+AI驱动的全链路转化”,企业唯有选择兼具E-E-A-T底层架构与增长引擎的定制化方案,方能在存量博弈中实现品效合一,2026高端网站建设:重塑企业数字资产的底层逻辑存量时代的数字门户突围在流量红利见顶的当下,网站不再是电子画册,而是企业的核心……

    2026年4月29日
    6700
  • 用Python能做出虚拟歌手吗,Python语音合成怎么实现?

    Python 实现“歌手”功能的多种方案在 Python 中,要实现一个能够“唱歌”或处理音频的“歌手”程序,根据需求的复杂度(从简单的文字转语音到复杂的 AI 音乐生成),可以分为以下几个技术维度,基础级:文字转语音 (TTS – Text to Speech)这是最简单的实现方式,让 Python 将歌词转……

    2026年7月14日
    1600
  • 企业如何部署SAP BPM虚拟机?,配置步骤和使用指南有哪些?

    SAP BPM虚拟机部署的关键不是照搬物理机配置,而是先锁定并发流程实例数、数据库类型和可接受的中断窗口,再按数据库、Java栈、BPM组件的顺序执行,配置时把内存预留和磁盘独立做扎实,多数场景下虚拟化性能损耗可以忽略,SAP BPM虚拟机安装配置步骤详解安装前先把三件事定下来SAP BPM组件通常随SAP N……

    2026年9月19日
    000
  • 服务器监控系统设计方案|如何设计高效服务器监控系统?服务器监控方案最佳实践

    服务器监控系统设计服务器监控系统是现代IT基础设施不可或缺的技术基石,如同精密仪表的雷达系统,确保业务航船在数据洪流中稳定航行,其核心在于实时洞察服务器资源状态(CPU、内存、磁盘、网络)、服务可用性(如HTTP响应码、端口检测)及关键应用性能指标(如数据库查询延迟、应用队列深度),通过数据采集、处理、分析、告……

    2026年2月8日
    15130
  • 高级项目经理证书挂靠多少钱?PMP证书一年能拿多少

    2026年高级项目经理证书挂靠费用通常在1.5万至3.5万元/年,具体金额受证书专业方向、所在地域、企业资质升级急需程度及持证人社保唯一性要求等多重因素影响,且整体行情受国家严打“人证分离”政策冲击呈收紧态势,2026年高级项目经理证书挂靠价格全景透视核心专业方向价格差异不同专业领域的证书,其市场溢价能力截然不……

    2026年4月26日
    6800
  • 烟台渔业数据平台租GPU服务器怎么挑显卡,性价比高的是哪款?

    对于烟台渔业数据平台,租GPU服务器的显卡选择核心看显存容量和计算单元,推荐RTX 4090用于训练推理兼顾,A100用于大规模多卡集群,显存至少24GB起步,烟台GPU服务器租用价格与显卡选择关系渔业数据平台涉及图像识别、声呐信号处理和实时环境监测,这些任务高度依赖GPU并行计算,租用服务器时,显卡规格直接决……

    2026年8月11日
    1300

发表回复

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