本文整理汇总了Golang中database/sql.Tx类的典型用法代码示例。如果您正苦于以下问题:Golang Tx类的具体用法?Golang Tx怎么用?Golang Tx使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Tx类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: createLoadStmt
func createLoadStmt(tableName *string, values *[]string, vld_op string, blWithPK bool, db *sql.Tx, verbose *bool) *sql.Stmt {
if len(*values) == 0 {
log.Fatalln("Nothing to build insert with!")
}
var buffer bytes.Buffer
buffer.WriteString("INSERT ")
if len(vld_op) > 0 && blWithPK {
buffer.WriteString(" OR " + vld_op + " ")
}
buffer.WriteString(" INTO " + (*tableName) + " VALUES (")
for i := range *values {
buffer.WriteString("?")
if i != len(*values)-1 {
buffer.WriteString(", ")
}
}
buffer.WriteString(");")
if *verbose {
fmt.Println(buffer.String())
}
stmt, err := db.Prepare(buffer.String())
if err != nil {
log.Fatalln(err)
}
return stmt
}
开发者ID:robinmin,项目名称:textql,代码行数:29,代码来源:main.go
示例2: setTablesDataTransaction
func setTablesDataTransaction(data map[string][]map[string]string, tx *sql.Tx) error {
for tableName, tableData := range data {
sql := fmt.Sprintf("truncate `%s`", tableName)
_, err := tx.Exec(sql)
if err != nil {
return err
}
for _, row := range tableData {
colNameList := []string{}
placeHolderNum := len(row)
valueList := []interface{}{}
for name, value := range row {
colNameList = append(colNameList, name)
valueList = append(valueList, value)
}
sqlColNamePart := "`" + strings.Join(colNameList, "`, `") + "`"
sqlValuePart := strings.Repeat("?, ", placeHolderNum-1) + "?"
sql = fmt.Sprintf("INSERT INTO `%s` (%s) VALUES (%s)", tableName, sqlColNamePart, sqlValuePart)
_, err := tx.Exec(sql, valueList...)
if err != nil {
return err
}
}
}
return nil
}
开发者ID:iizotop,项目名称:kmg,代码行数:26,代码来源:SetTableData.go
示例3: Down_20130708104836
// Down is executed when this migration is rolled back
func Down_20130708104836(txn *sql.Tx) {
_, err := txn.Exec(sqlDown)
if err != nil {
fmt.Printf("error adding col announce key: %s", err.Error())
}
}
开发者ID:frazy,项目名称:babou,代码行数:8,代码来源:20130708104836_AddAnnounceKeyToUsers.go
示例4: chooseWorkUnits
// chooseWorkUnits chooses up to a specified number of work units from
// some work spec.
func (w *worker) chooseWorkUnits(tx *sql.Tx, spec *workSpec, numUnits int) ([]*workUnit, error) {
query := buildSelect([]string{
workUnitID,
workUnitName,
}, []string{
workUnitTable,
}, []string{
inThisWorkSpec,
workUnitAttempt + " IS NULL",
})
query += fmt.Sprintf(" ORDER BY priority DESC, name ASC")
query += fmt.Sprintf(" LIMIT %v", numUnits)
query += " FOR UPDATE OF work_unit"
rows, err := tx.Query(query, spec.id)
if err != nil {
return nil, err
}
var result []*workUnit
err = scanRows(rows, func() error {
unit := workUnit{spec: spec}
if err := rows.Scan(&unit.id, &unit.name); err == nil {
result = append(result, &unit)
}
return err
})
if err != nil {
return nil, err
}
return result, nil
}
开发者ID:dmaze,项目名称:goordinate,代码行数:32,代码来源:attempt.go
示例5: insert
// insert saves a profile to a role
func (m *RoleProfileType) insert(
tx *sql.Tx,
siteID int64,
roleID int64,
) (
int,
error,
) {
status, err := m.Validate(siteID)
if err != nil {
return status, err
}
// upsert
_, err = tx.Exec(`
INSERT INTO role_profiles
SELECT $1, $2
WHERE NOT EXISTS (
SELECT role_id
,profile_id
FROM role_profiles
WHERE role_id = $1
AND profile_id = $2
)`,
roleID,
m.ID,
)
if err != nil {
return http.StatusInternalServerError,
fmt.Errorf("Error executing upsert: %v", err.Error())
}
return http.StatusOK, nil
}
开发者ID:riseofthetigers,项目名称:microcosm,代码行数:36,代码来源:role_profiles.go
示例6: processArticles
func processArticles(articleChannel *chan *[]Article, tx *sql.Tx, waitGroup *sync.WaitGroup) {
waitGroup.Add(1)
for articles := range *articleChannel {
rows, err := tx.Query("select subscription_id, datetime(published), url from articles where published >= datetime(?) and subscription_id = ? order by datetime(published) asc", (*articles)[0].Published.Format(time.RFC3339), (*articles)[0].SubscriptionId)
var existingArticles []Article
if err != nil {
log.Println("Article Download Error | Error retrieving existing articles " + err.Error())
}
for rows.Next() {
var article Article
var dateString string
rows.Scan(&article.SubscriptionId, &dateString, &article.Url)
article.Published, err = time.Parse("2006-01-02 15:04:05", dateString)
existingArticles = append(existingArticles, Article{})
copy(existingArticles[0+1:], existingArticles[0:])
existingArticles[0] = article
}
rows.Close()
if len(existingArticles) == 0 {
insertFinalArticleSlice(articles, tx)
} else if (existingArticles[0].Published != (*articles)[len(*articles)-1].Published) && (existingArticles[0].Url != (*articles)[len(*articles)-1].Url) {
index := sort.Search(len(*articles), func(i int) bool {
return (*articles)[i].Published.Unix() > existingArticles[0].Published.Unix()
})
newSlice := ((*articles)[index:])
insertFinalArticleSlice(&newSlice, tx)
}
}
waitGroup.Done()
}
开发者ID:ArturoVM,项目名称:pond,代码行数:30,代码来源:articles_download.go
示例7: RemoveACIInfo
// RemoveACIInfo removes the ACIInfo with the given blobKey.
func RemoveACIInfo(tx *sql.Tx, blobKey string) error {
_, err := tx.Exec("DELETE from aciinfo where blobkey == $1", blobKey)
if err != nil {
return err
}
return nil
}
开发者ID:balagopalraj,项目名称:clearlinux,代码行数:8,代码来源:aciinfo.go
示例8: doExec
func (self *Source) doExec(terms ...interface{}) (res sql.Result, err error) {
var tx *sql.Tx
if self.session == nil {
return nil, db.ErrNotConnected
}
chunks := sqlCompile(terms)
query := strings.Join(chunks.Query, ` `)
for i := 0; i < len(chunks.Args); i++ {
query = strings.Replace(query, `?`, fmt.Sprintf(`$%d`, i+1), 1)
}
if debugEnabled() == true {
debugLogQuery(query, chunks)
}
if tx, err = self.session.Begin(); err != nil {
return nil, err
}
if res, err = tx.Exec(query, chunks.Args...); err != nil {
return nil, err
}
if err = tx.Commit(); err != nil {
return nil, err
}
return res, nil
}
开发者ID:vimdude,项目名称:db,代码行数:33,代码来源:database.go
示例9: migrateToV4
func migrateToV4(tx *sql.Tx) error {
for _, t := range []string{
"CREATE TABLE aciinfo_tmp (blobkey string, name string, importtime time, lastusedtime time, latest bool);",
"INSERT INTO aciinfo_tmp (blobkey, name, importtime, latest) SELECT blobkey, name, importtime, latest from aciinfo",
"DROP TABLE aciinfo",
// We don't use now() as a DEFAULT for lastusedtime because it doesn't
// return a UTC time, which is what we want. Instead, we UPDATE it
// below.
"CREATE TABLE aciinfo (blobkey string, name string, importtime time, lastusedtime time, latest bool);",
"CREATE UNIQUE INDEX IF NOT EXISTS blobkeyidx ON aciinfo (blobkey)",
"CREATE INDEX IF NOT EXISTS nameidx ON aciinfo (name)",
"INSERT INTO aciinfo SELECT * from aciinfo_tmp",
"DROP TABLE aciinfo_tmp",
} {
_, err := tx.Exec(t)
if err != nil {
return err
}
}
t := time.Now().UTC()
_, err := tx.Exec("UPDATE aciinfo lastusedtime = $1", t)
if err != nil {
return err
}
return nil
}
开发者ID:krnowak,项目名称:rkt,代码行数:26,代码来源:migrate.go
示例10: insertConsumerStatusLog
func insertConsumerStatusLog(tx *sql.Tx, consumerId, employeeId, oldStatus, newStatus string) (id int64, err error) {
sql := "insert into consumer_status_log(consumer_id,employee_id,create_time,old_status,new_status) values(?,?,?,?,?)"
lessgo.Log.Debug(sql)
stmt, err := tx.Prepare(sql)
if err != nil {
lessgo.Log.Error(err.Error())
return 0, err
}
res, err := stmt.Exec(consumerId, employeeId, time.Now().Format("20060102150405"), oldStatus, newStatus)
if err != nil {
lessgo.Log.Error(err.Error())
return 0, err
}
logId, err := res.LastInsertId()
if err != nil {
lessgo.Log.Error(err.Error())
return 0, err
}
return logId, err
}
开发者ID:hjqhezgh,项目名称:wooyou-admin,代码行数:27,代码来源:consumerStatusLog.go
示例11: RemoveRemote
// RemoveRemote removes the remote with the given blobKey.
func RemoveRemote(tx *sql.Tx, blobKey string) error {
_, err := tx.Exec("DELETE FROM remote WHERE blobkey == $1", blobKey)
if err != nil {
return err
}
return nil
}
开发者ID:danieltaborda,项目名称:rkt,代码行数:8,代码来源:remote.go
示例12: rollbackAndError
func rollbackAndError(tx *sql.Tx, err error) error {
new_err := tx.Rollback()
if new_err != nil {
return fmt.Errorf("Rollback error (%v); previous error (%v)", new_err, err)
}
return err
}
开发者ID:hyandell,项目名称:rs_ingester,代码行数:7,代码来源:postgres.go
示例13: getLoadBatch
func getLoadBatch(tx *sql.Tx, batchUuid string) (*LoadBatch, error) {
var batch LoadBatch
batch.UUID = batchUuid
rows, err := tx.Query("SELECT keyname, tablename FROM "+pendingLoadTable+" WHERE batch_uuid = $1", batchUuid)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var load Load
err := rows.Scan(&load.KeyName, &load.TableName)
if err != nil {
log.Println("Scan threw an error!")
return nil, err
}
batch.Loads = append(batch.Loads, load)
}
if len(batch.Loads) == 0 {
return nil, noLoadsError
}
batch.TableName = batch.Loads[0].TableName
return &batch, nil
}
开发者ID:hyandell,项目名称:rs_ingester,代码行数:29,代码来源:postgres.go
示例14: UpdateSchema
func UpdateSchema(txn *sql.Tx) error {
var (
err error
count int64
)
err = txn.QueryRow(
`SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema = $1 AND table_name = $2;`,
"public", "cas_objects",
).Scan(&count)
if err != nil {
return err
}
if count == 0 {
_, err = txn.Exec(
`
CREATE TABLE cas_objects (
address BYTEA NOT NULL,
content BYTEA,
external VARCHAR,
PRIMARY KEY (address),
CHECK (octet_length(address) = 20),
CHECK (content IS NOT NULL OR external IS NOT NULL)
);
`,
)
if err != nil {
return err
}
}
return nil
}
开发者ID:fd,项目名称:simplex,代码行数:35,代码来源:schema.go
示例15: getLogEntries
// getLogEntries retrieves log entries in the range [from, to)
func getLogEntries(tx *sql.Tx, from, to int) ([]*LogEntry, error) {
var out []*LogEntry
rows, err := tx.Query(`SELECT id, term, client_id, client_serial, operation, key, value `+
`FROM log WHERE id >= ? AND id < ? ORDER BY id ASC`, from, to)
if err != nil {
log.Printf("db error loading log entries [%d,%d): %v", from, to, err)
return nil, err
}
for rows.Next() {
l := new(LogEntry)
out = append(out, l)
err := rows.Scan(
&l.ID,
&l.Term,
&l.ClientRequest.ClientID,
&l.ClientRequest.ClientSerial,
&l.ClientRequest.Operation,
&l.ClientRequest.Key,
&l.ClientRequest.Value)
if err != nil {
log.Printf("db error scanning log entry: %v", err)
return nil, err
}
}
if err := rows.Err(); err != nil {
log.Printf("db error reading log entries: %v", err)
return nil, err
}
return out, nil
}
开发者ID:waldonhendricks,项目名称:raftstarter,代码行数:32,代码来源:database.go
示例16: savePeroid
// 处理分时数据
func savePeroid(tx *sql.Tx, table string, peroid []Peroid60) error {
if len(peroid) == 0 {
return nil
}
stmt, err := tx.Prepare("replace into " + table + " values(?,?,?,?,?,?)")
if err != nil {
return err
}
defer stmt.Close()
for _, p := range peroid {
// 新增
result, err := stmt.Exec(p.Time, p.Open, p.Close, p.High, p.Low, p.Volume)
if err != nil {
return err
}
ra, err := result.RowsAffected()
if err != nil {
return err
}
if ra == 0 {
return sql.ErrNoRows
}
}
return nil
}
开发者ID:ifzz,项目名称:stockrecorder,代码行数:33,代码来源:sqlite.go
示例17: saveLogEntries
// saveLogEntries saves a slice of log entries, which must be in order by index.
func saveLogEntries(tx *sql.Tx, entries []*LogEntry) error {
if len(entries) == 0 {
return nil
}
// truncate the log if applicable
_, err := tx.Exec(`DELETE FROM log WHERE id >= ?`, entries[0].ID)
if err != nil {
log.Printf("db error truncating log: %v", err)
return err
}
for _, elt := range entries {
_, err := tx.Exec(`INSERT INTO log (id, term, client_id, client_serial, operation, key, value) `+
`VALUES (?,?,?,?,?,?,?)`,
elt.ID,
elt.Term,
elt.ClientRequest.ClientID,
elt.ClientRequest.ClientSerial,
elt.ClientRequest.Operation,
elt.ClientRequest.Key,
elt.ClientRequest.Value)
if err != nil {
log.Printf("db error inserting log entry: %v", err)
return err
}
}
return nil
}
开发者ID:waldonhendricks,项目名称:raftstarter,代码行数:31,代码来源:database.go
示例18: saveError
// 保存错误信息
func saveError(tx *sql.Tx, date, message string) error {
stmt, err := tx.Prepare("replace into error values(?,?)")
if err != nil {
return err
}
defer stmt.Close()
// 新增
result, err := stmt.Exec(date, message)
if err != nil {
return err
}
ra, err := result.RowsAffected()
if err != nil {
return err
}
if ra == 0 {
return sql.ErrNoRows
}
return nil
}
开发者ID:ifzz,项目名称:stockrecorder,代码行数:26,代码来源:sqlite.go
示例19: invokeMigration
func (r *Runner) invokeMigration(isTest bool, m Migration, c *spiffy.DbConnection, optionalTx ...*sql.Tx) (err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("%v", err)
}
}()
if m.IsTransactionIsolated() {
err = m.Apply(c, spiffy.OptionalTx(optionalTx...))
return
}
var tx *sql.Tx
tx, err = c.Begin()
if err != nil {
return err
}
defer func() {
if err == nil {
err = exception.Wrap(tx.Commit())
} else {
err = exception.WrapMany(err, exception.New(tx.Rollback()))
}
}()
err = m.Apply(c, tx)
return
}
开发者ID:blendlabs,项目名称:spiffy,代码行数:27,代码来源:runner.go
示例20: copyFrom
func (qs *QuadStore) copyFrom(tx *sql.Tx, in []graph.Delta) error {
stmt, err := tx.Prepare(pq.CopyIn("quads", "subject", "predicate", "object", "label", "id", "ts", "subject_hash", "predicate_hash", "object_hash", "label_hash"))
if err != nil {
return err
}
for _, d := range in {
_, err := stmt.Exec(
d.Quad.Subject,
d.Quad.Predicate,
d.Quad.Object,
d.Quad.Label,
d.ID.Int(),
d.Timestamp,
hashOf(d.Quad.Subject),
hashOf(d.Quad.Predicate),
hashOf(d.Quad.Object),
hashOf(d.Quad.Label),
)
if err != nil {
glog.Errorf("couldn't prepare COPY statement: %v", err)
return err
}
}
_, err = stmt.Exec()
if err != nil {
return err
}
return stmt.Close()
}
开发者ID:WeiZhang555,项目名称:clair,代码行数:29,代码来源:quadstore.go
注:本文中的database/sql.Tx类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论