本文整理汇总了Golang中github.com/jmoiron/sqlx.Tx.Query方法的典型用法代码示例。如果您正苦于以下问题:Golang Tx.Query方法的具体用法?Golang Tx.Query怎么用?Golang Tx.Query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/jmoiron/sqlx.Tx
的用法示例。
在下文中一共展示了Tx.Query方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ExportCSV
// ExportCSV exports database and sites as as csv file
func (d *Database) ExportCSV(tx *sqlx.Tx, siteIDs ...[]int) (outp string, err error) {
var buff bytes.Buffer
w := csv.NewWriter(&buff)
w.Comma = ';'
w.UseCRLF = true
err = w.Write([]string{"SITE_SOURCE_ID", "SITE_NAME", "MAIN_CITY_NAME", "GEONAME_ID", "PROJECTION_SYSTEM", "LONGITUDE", "LATITUDE", "ALTITUDE", "CITY_CENTROID", "STATE_OF_KNOWLEDGE", "OCCUPATION", "STARTING_PERIOD", "ENDING_PERIOD", "CARAC_NAME", "CARAC_LVL1", "CARAC_LVL2", "CARAC_LVL3", "CARAC_LVL4", "CARAC_EXP", "BIBLIOGRAPHY", "COMMENTS"})
if err != nil {
log.Println("database::ExportCSV : ", err.Error())
}
w.Flush()
// Datatabase isocode
err = tx.Get(d, "SELECT name, default_language FROM \"database\" WHERE id = $1", d.Id)
if err != nil {
return
}
// Cache characs
characs := make(map[int]string)
q := "WITH RECURSIVE nodes_cte(id, path) AS (SELECT ca.id, cat.name::TEXT AS path FROM charac AS ca LEFT JOIN charac_tr cat ON ca.id = cat.charac_id LEFT JOIN lang ON cat.lang_isocode = lang.isocode WHERE lang.isocode = $1 AND ca.parent_id = 0 UNION ALL SELECT ca.id, (p.path || ';' || cat.name) FROM nodes_cte AS p, charac AS ca LEFT JOIN charac_tr cat ON ca.id = cat.charac_id LEFT JOIN lang ON cat.lang_isocode = lang.isocode WHERE lang.isocode = $1 AND ca.parent_id = p.id) SELECT * FROM nodes_cte AS n ORDER BY n.id ASC\n"
rows, err := tx.Query(q, d.Default_language)
switch {
case err == sql.ErrNoRows:
rows.Close()
return outp, nil
case err != nil:
rows.Close()
return
}
for rows.Next() {
var id int
var path string
if err = rows.Scan(&id, &path); err != nil {
return
}
characs[id] = path
}
q = "SELECT s.code, s.name, s.city_name, s.city_geonameid, ST_X(s.geom::geometry) as longitude, ST_Y(s.geom::geometry) as latitude, ST_X(s.geom_3d::geometry) as longitude_3d, ST_Y(s.geom_3d::geometry) as latitude3d, ST_Z(s.geom_3d::geometry) as altitude, s.centroid, s.occupation, sr.start_date1, sr.start_date2, sr.end_date1, sr.end_date2, src.exceptional, src.knowledge_type, srctr.bibliography, srctr.comment, c.id as charac_id FROM site s LEFT JOIN site_range sr ON s.id = sr.site_id LEFT JOIN site_tr str ON s.id = str.site_id LEFT JOIN site_range__charac src ON sr.id = src.site_range_id LEFT JOIN site_range__charac_tr srctr ON src.id = srctr.site_range__charac_id LEFT JOIN charac c ON src.charac_id = c.id WHERE s.database_id = $1 AND str.lang_isocode IS NULL OR str.lang_isocode = $2 ORDER BY s.id, sr.id"
rows2, err := tx.Query(q, d.Id, d.Default_language)
if err != nil {
rows2.Close()
return
}
for rows2.Next() {
var (
code string
name string
city_name string
city_geonameid int
longitude float64
latitude float64
longitude3d float64
latitude3d float64
altitude3d float64
centroid bool
occupation string
start_date1 int
start_date2 int
end_date1 int
end_date2 int
knowledge_type string
exceptional bool
bibliography string
comment string
charac_id int
slongitude string
slatitude string
saltitude string
scentroid string
soccupation string
scharacs string
scharac_name string
scharac_lvl1 string
scharac_lvl2 string
scharac_lvl3 string
scharac_lvl4 string
sexceptional string
// description string
)
if err = rows2.Scan(&code, &name, &city_name, &city_geonameid, &longitude, &latitude, &longitude3d, &latitude3d, &altitude3d, ¢roid, &occupation, &start_date1, &start_date2, &end_date1, &end_date2, &exceptional, &knowledge_type, &bibliography, &comment, &charac_id); err != nil {
log.Println(err)
rows2.Close()
return
}
// Geonameid
var cgeonameid string
if city_geonameid != 0 {
cgeonameid = strconv.Itoa(city_geonameid)
}
// Longitude
slongitude = strconv.FormatFloat(longitude, 'f', -1, 32)
//.........这里部分代码省略.........