我正在使用go-sql-driver / mysql从OMDB数据转储中插入大量电影。我正在解析数据并使用以下代码插入它:
_, err = database.Query("INSERT INTO `movies` (`name`, `year`, `release_date`, `full_plot`, `genre`, `imdb_id`) VALUES (?, ?, ?, ?, ?, ?)", movie.Name, movie.Year, movie.ReleaseDate, movie.FullPlot, movie.Genre, movie.IMDBID)
if err != nil {
return false, nil
}
return true, nil
它可以工作,但只有150行。我做错了吗?
答案 0 :(得分:1)
您的代码似乎丢弃了返回的错误值,您不应该这样做;优雅地处理它。查看错误是什么,如果您打开与DB的连接太多,则应使用数据库连接池并设置(*DB) SetMaxOpenConns
值。
(*DB)Query
通常用于返回行的SELECT
语句,(*DB)Exec
使用(*Stmt)Exec
或INSERT
。
我建议使用数据库连接池和(*sql.DB)Prepare
来准备语句并使用预准备语句运行插入(甚至并发)。