В чем разница между sqlx.Connect () и sqlx.Open ()? - PullRequest
0 голосов
/ 13 сентября 2018

Я использую библиотеку jmoiron sqlx для моего проекта golang.Я пытался создать соединение базы данных MySQL.Итак, я нашел эти две функции: sqlx.Connect() и sqlx.Open(), но не нашел разницы.

Итак, я попытался прочитать документацию в godoc .Я нашел это:

sqlx.Connect ()

Connect to a database and verify with a ping.

sqlx.Open ()

Open is the same as sql.Open, but returns an *sqlx.DB instead.

Я знаю, что sqlx.Open() создает соединение с базой данных, используя golang sql.Open.Но что такое sqlx.Connect() use?

Если я увижу здесь внутри исходный код:

func Connect(driverName, dataSourceName string) (*DB, error) {
    db, err := Open(driverName, dataSourceName)
    if err != nil {
        return nil, err
    }
    err = db.Ping()
    if err != nil {
        db.Close()
        return nil, err
    }
    return db, nil
}

Я вижу, что он вызывал тот же sqlx.Open(), затем вызывал db.Ping().Таким образом, единственное отличие состоит в том, что sqlx.Open() выполняет ping после создания соединения?Если это так, почему это пинг?Что отличает его?

Спасибо

1 Ответ

0 голосов
/ 13 сентября 2018

Connect будет использовать open и ping для проверки действительного соединения, которое вы затем сможете обработать с ошибкой.

По сути, вы можете сразу увидеть, что соединение db отсутствует ни в одном методе, а не записывать это.закодируй себя снова.

...