更新时间:2026-07-01 GMT+08:00
通过Python、C或Golang连接RDS for MySQL实例
本文介绍如何通过Python、C或Golang连接RDS for MySQL实例。
代码中的参数说明
| 参数 | 说明 |
|---|---|
| <RDS_HOST> | 实例的连接地址。 获取方法如下:
|
| <RDS_PORT> | 实例的数据库端口。 获取方法如下:
|
| <RDS_USER> | 实例的账号名称,默认root。 |
| <RDS_PASSWORD> | 实例的账号所对应的密码。 |
| <RDS_DATABASE> | 连接的实例的数据库名称。 |
在运行代码前,请先安装PyMySQL。
- Python3安装命令:
pip3 install PyMySQL
- Python2安装命令:
pip install pymysql==0.9.3
示例代码如下:
import pymysql
connection = pymysql.connect(host='<RDS_HOST>',
port=<RDS_PORT>,
user='<RDS_USER>',
passwd='<RDS_PASSWORD>',
db='<RDS_DATABASE>')
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM `courses`"
cursor.execute(sql)
for result in cursor:
print(result)
finally:
connection.close() 在运行代码前,请先安装mysql.h头文件,以CentOS为例,执行如下命令:
sudo yum install mysql-devel
示例代码如下:
#include<stdio.h>#include<mysql.h>#include<string.h>intmain(void){
MYSQL*t_mysql;MYSQL_RES*res=NULL;MYSQL_ROWrow;char*query_str=NULL;intrc,
i,
fields;introws;charselect[
]="select * from courses";//输入希望执行的SQL。t_mysql=mysql_init(NULL);if(NULL==t_mysql){
printf("init failed\n");
}if(NULL==mysql_real_connect(t_mysql,
"<RDS_HOST>",
"<RDS_USER>",
"<RDS_PASSWORD>",
"<RDS_DATABASE>",
<RDS_PORT>,
NULL,
0)){
printf("connect failed\n");
}if(mysql_real_query(t_mysql,
select,
strlen(select))!=0){
printf("select failed\n");
}res=mysql_store_result(t_mysql);if(NULL==res){
printf("mysql_restore_result(): %s\n",
mysql_error(t_mysql));return0;
}fields=mysql_num_fields(res);while((row=mysql_fetch_row(res))){
for(i=0;i<fields;i++){
printf("%s\t", row[i]);
}printf("\n");
}mysql_close(t_mysql);
} 在运行代码前,请先安装MySQL驱动:
go get -u github.com/go-sql-driver/mysql
示例代码如下:
package main
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/go-sql-driver/mysql"
)
func getDB() (*sql.DB, error) {
// 从环境变量获取连接参数
host := os.Getenv("RDS_HOST")
port := os.Getenv("RDS_PORT")
user := os.Getenv("RDS_USER")
password := os.Getenv("RDS_PASSWORD")
database := os.Getenv("RDS_DATABASE")
if host == "" || user == "" || password == "" {
return nil, fmt.Errorf("缺少必要的数据库连接参数")
}
if port == "" {
port = "3306" // 默认端口
}
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
user, password, host, port, database)
db, err := sql.Open("mysql", dsn)
if err != nil {
return nil, err
}
// 配置连接池
db.SetMaxOpenConns(20)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(30 * time.Minute)
return db, nil
}
func main() {
db, err := getDB()
if err != nil {
log.Fatal("数据库连接失败:", err)
}
defer db.Close()
// 使用数据库连接执行操作
// ...
}