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/bigquery-python%e6%80%8e%e4%b9%88%e8%bf%9e%e6%8e%a5%ef%bc%9fbigquery-python%e8%bf%9e%e6%8e%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e4%bb%a3%e7%a0%81/

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

相关推荐

  • put python是什么?Python中put方法怎么用

    “put python”并非标准命令,正确用法应为“pip install python”或“conda install python”,用于在本地环境或服务器中安装Python解释器及第三方库,很多新手在搜索“put python”时,往往是因为记错了命令或者混淆了不同包管理器的语法,这种输入错误在初学者中非……

    2026年7月7日
    7000
  • 西安有哪些游戏服务器供应商,哪家性价比更高

    在西安,游戏服务器主要部署在西安本地数据中心与各大云厂商的可用区,包括腾讯云西安可用区、阿里云西安节点、华为云西安节点,以及简米科技、酷番云等持牌IDC服务商在西安的自营机房,支撑着从本地研发到全国发行的游戏运营,西安游戏服务器格局概览西安作为西北地区的互联网核心节点,拥有国家级互联网骨干直联点,网络延迟与带宽……

    2026年8月26日
    1000
  • 个人注册域名和公司注册域名有什么区别?个人域名和公司注册域名哪个好

    个人注册域名通常以自然人身份申请,成本低但缺乏企业背书,适合个人博客或测试项目;公司注册域名需提交营业执照,具备法律主体资格,是建立品牌信任、开展正规商业运营的首选,在数字化时代,域名不仅是网站的地址,更是企业在互联网上的“门牌号”,很多创业者在起步阶段,往往会在“用个人名义”还是“用公司名义”注册域名之间犹豫……

    2026年5月28日
    3800
  • 服务器域名解析IP怎么设置呢?,如何配置

    服务器域名解析IP是将域名指向服务器IP地址的关键操作,无论你是搭建个人博客还是企业官网,正确配置域名解析都是网站上线的基础,本文从设置方法、问题排查到服务选择,给你一套完整的实践指南,为什么需要将域名解析到服务器IP域名解析是互联网的寻址系统,它把人类易记的域名翻译成服务器能识别的IP地址,没有解析,用户输入……

    2026年7月30日
    200
  • 服务器最多能绑定多少个弹性ip,有什么限制

    单台云服务器能绑定的弹性IP数量主要取决于实例规格和网卡配额,多数云厂商默认允许绑定1-2个,但通过调整配置可扩展至数十个甚至更多,弹性ip绑定数量限制由哪些因素决定默认绑定数量并非固定值,而是由几个底层机制共同约束,理解这些因素,才能准确评估自己的业务需要多少公网IP,实例规格:性能越高,绑定越多云服务器根据……

    2026年8月2日
    900
  • 个人所得税服务器地址是多少?个税APP登录不上怎么办

    个人所得税服务器地址并非单一固定IP,而是通过国家税务总局官方域名(如https://etax.chinatax.gov.cn)进行动态解析,用户只需在浏览器输入官方网址或下载“个人所得税”APP即可安全访问,切勿直接搜索或输入所谓的“服务器IP地址”以防遭遇钓鱼网站,在数字化办税日益普及的今天,许多纳税人对……

    2026年6月4日
    4200
  • 高级数据库课程设计怎么做?数据库课程设计难点解析

    2026年高级数据库课程设计的核心突围点,在于跳出传统CRUD逻辑,以分布式架构、向量检索与AI驱动优化为抓手,交付具备高并发处理能力与工程落地价值的实战项目,2026年课设破局:告别玩具项目,拥抱工业级标准传统课设的致命痛点以往多数学生习惯于单机MySQL+简单前端页面的拼凑,这在2026年的评估体系下毫无竞……

    2026年4月26日
    5700
  • 个人免费域名怎么注册?个人免费域名注册平台推荐

    个人免费域名注册在技术上是完全可行的,但需要接受其附带广告、二级域名结构或短期有效等限制,建议仅用于测试或临时项目,长期业务应购买付费顶级域名,在2026年的互联网生态中,域名依然是个人品牌和技术项目的基石,许多初学者常被“免费”二字吸引,却忽略了背后的隐性成本,业内专家指出,域名不仅是网址,更是数字资产的一部……

    2026年6月14日
    2610
  • 服务器带宽指的是什么意思?服务器带宽怎么看大小

    服务器带宽指的是在单位时间内服务器能够传输的数据量,直接决定了网站的访问速度和并发处理能力,是衡量服务器性能的核心指标之一,带宽就像一条高速公路的车道数量,车道越多(带宽越大),单位时间内能通过的车辆(数据)就越多,拥堵的概率就越低,对于企业网站而言,选择合适的带宽不仅能提升用户体验,还能显著降低运营成本,带宽……

    2026年4月4日
    11500
  • 服务器怎么查看数据库密码是什么,数据库密码忘记了怎么查看

    在服务器运维与网站管理过程中,数据库密码的找回与查看是一项高频且关键的操作,核心结论是:出于安全考虑,服务器系统通常不会以明文形式直接存储数据库密码,管理员无法直接“查看”原始密码,只能通过配置文件获取加密后的连接字符串、使用特权账号重置密码,或通过特定的找回机制进行恢复, 理解这一逻辑,是解决问题的关键前提……

    2026年3月14日
    13300

发表回复

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