GO连接Doris查询实战

本文介绍了如何在GO环境中,通过GOMySQLClient连接Doris数据库并执行SQL查询,包括创建用户、表,以及编写代码示例。

问题背景

  1. 有客户提出来他们的客户端是GO的,需要使用GO语言查询Doris。

问题解决思路

  1. Doirs高度兼容MySQL协议,Java客户端目前使用MySQL JDBC Client查询Doris。
  2. GO也有MySQL Client,因此建议使用GO MySQL Client,下面进行实战。

代码实战

1. Doris环境准备
  1. 创建Doirs用户。
create database php_doris;
CREATE USER 'bigdata'@'%' IDENTIFIED BY 'mypss'
GRANT ALL ON php_doris.*  TO 'bigdata'@'%';
GRANT SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV on php_doris.* TO 'bigdata'@'%';
  1. 创建Doris表
CREATE TABLE test
 (
         id VARCHAR
连接 Apache Doris(原 Palo)数据库并执行查询操作,通常可以通过 MySQL 协议进行连接,因为 Doris 提供了兼容 MySQL 的协议接口。你可以使用 Python 中的 `pymysql` 或 `mysql-connector-python` 等库来连接 Doris 并执行 SQL 查询。 以下是一个使用 `pymysql` 连接 Doris 数据库并查询数据的完整示例代码: ```python import pymysql # Doris 连接配置 host = 'your_doris_host' # Doris FE 节点的 IP 或域名 port = 9030 # 默认是 9030(MySQL 协议端口) user = 'your_username' password = 'your_password' database = 'your_database_name' try: # 建立连接 connection = pymysql.connect( host=host, port=port, user=user, password=password, database=database, charset='utf8mb4', autocommit=True # 自动提交事务 ) # 创建游标 with connection.cursor() as cursor: # 执行查询语句 sql = "SELECT * FROM your_table_name LIMIT 10" cursor.execute(sql) # 获取所有结果 results = cursor.fetchall() # 获取字段名 column_names = [desc[0] for desc in cursor.description] print("Column names:", column_names) # 打印每一行数据 for row in results: print(row) except pymysql.Error as e: print(f"MySQL Error: {e}") except Exception as e: print(f"Error: {e}") finally: # 关闭连接 if 'connection' in locals(): connection.close() ``` ### 解释: 1. **Doris 支持 MySQL 协议**:Doris 的 Frontend(FE)节点默认开启了一个 MySQL 兼容的协议端口(通常是 9030),因此可以像连接 MySQL 一样使用标准的 MySQL 客户端库连接。 2. **pymysql 库**:这是一个纯 Python 实现的 MySQL 客户端库,安装简单:`pip install pymysql` 3. **连接参数说明**: - `host`: Doris FE 的地址 - `port`: 一般为 9030(不是 HTTP 端口 8030 或 8040) - `user/password`: Doris 中已创建的用户账号 - `database`: 要查询的数据库名 4. **异常处理**:确保连接失败或查询出错时能捕获异常。 5. **资源释放**:在 finally 块中关闭连接,防止资源泄漏。 > 注意事项: - 确保你的 Doris 集群已启动,并且网络可达。 - 用户权限正确,该用户有权限访问指定数据库和表。 - 如果使用 SSL 加密连接,需额外配置 `ssl` 参数。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值