使用Golang对Redshift数据库进行CRUD操作

huangapple go评论86阅读模式
英文:

CRUD operations on Redshift databases using Golang

问题

当涉及到在数据库中创建表和插入数据时,你可以使用不同的库,具体取决于你使用的数据库类型。以下是一些常见的数据库库和示例代码:

  1. MySQL:你可以使用Python的mysql-connector-python库来连接MySQL数据库,并执行创建表和插入数据的操作。以下是一个示例代码:
import mysql.connector

# 连接到MySQL数据库
cnx = mysql.connector.connect(user='your_username', password='your_password',
                              host='your_host', database='your_database')

# 创建表
create_table_query = '''
CREATE TABLE your_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    age INT
)
'''
cursor = cnx.cursor()
cursor.execute(create_table_query)

# 插入数据
insert_data_query = '''
INSERT INTO your_table (name, age) VALUES (%s, %s)
'''
data = [('John', 25), ('Jane', 30), ('Tom', 35)]
cursor.executemany(insert_data_query, data)

# 提交更改并关闭连接
cnx.commit()
cursor.close()
cnx.close()
  1. PostgreSQL:你可以使用Python的psycopg2库来连接PostgreSQL数据库,并执行创建表和插入数据的操作。以下是一个示例代码:
import psycopg2

# 连接到PostgreSQL数据库
conn = psycopg2.connect(database='your_database', user='your_username',
                        password='your_password', host='your_host', port='your_port')

# 创建表
create_table_query = '''
CREATE TABLE your_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255),
    age INT
)
'''
cur = conn.cursor()
cur.execute(create_table_query)

# 插入数据
insert_data_query = '''
INSERT INTO your_table (name, age) VALUES (%s, %s)
'''
data = [('John', 25), ('Jane', 30), ('Tom', 35)]
cur.executemany(insert_data_query, data)

# 提交更改并关闭连接
conn.commit()
cur.close()
conn.close()

这只是两个常见的数据库库的示例代码,你可以根据你使用的数据库类型选择适合的库。

英文:

Could you please give me some explanations and some code examples on how it would be done (ex: creating tables and inserting data) ?
Which library would you advise me to use ?

Thanks !

答案1

得分: 7

  • 请注意导入 github.com/lib/pq 的副作用

  • 在此之后,可以通过 db.Query() 或 db.Exec() 运行查询

  • https://golang.org/pkg/database/sql/#example_DB_Query

  • https://golang.org/pkg/database/sql/#pkg-examples

      import (
      	_ "github.com/lib/pq"
      	"database/sql"
      	"fmt"
      )
    
      func MakeRedshfitConnection(username, password, host, port, dbName string) (*sql.DB, error) {
    
      	url := fmt.Sprintf("sslmode=require user=%v password=%v host=%v port=%v dbname=%v",
      		username,
      		password,
      		host,
      		port,
      		dbName)
    
      	var err error
      	var db *sql.DB
      	if db, err = sql.Open("postgres", url); err != nil {
      		return nil, fmt.Errorf("redshift connect error : (%v)", err)
      	}
    
      	if err = db.Ping(); err != nil {
      		return nil, fmt.Errorf("redshift ping error : (%v)", err)
      	}
      	return db, nil
      }
    
英文:
  • Please note the side-effect import of github.com/lib/pq

  • After this queries can be run by db.Query() or db.Exec()

  • https://golang.org/pkg/database/sql/#example_DB_Query

  • https://golang.org/pkg/database/sql/#pkg-examples

      import (
      	_ "github.com/lib/pq"
      	"database/sql"
      	"fmt"
      )
    
      func MakeRedshfitConnection(username, password, host, port, dbName string) (*sql.DB, error) {
    
      	url := fmt.Sprintf("sslmode=require user=%v password=%v host=%v port=%v dbname=%v",
      		username,
      		password,
      		host,
      		port,
      		dbName)
    
      	var err error
      	var db *sql.DB
      	if db, err = sql.Open("postgres", url); err != nil {
      		return nil, fmt.Errorf("redshift connect error : (%v)"), err
      	}
    
      	if err = db.Ping(); err != nil {
      		return nil, fmt.Errorf("redshift ping error : (%v)", err)
      	}
      	return db, nil
      }
    

huangapple
  • 本文由 发表于 2017年3月24日 06:50:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/42988417.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定