与多个包共享全局定义的数据库连接

2024-01-02

我读过一些关于如何处理数据库连接的 StackOverflow 答案。因为它是一个池,所以我们可以全局定义它并在多个 goroutine 中使用它,而且它是安全的。

我遇到的问题是我已将 REST API 拆分为多个包。这些包中的每一个都需要一个数据库连接,因此我在启动时打开一个数据库连接。但即使我在全局定义连接,它也只是在包级别。我该怎么做才能在多个包之间共享它?

对于某些上下文,我在应用程序中使用 PostgreSQL 驱动程序和 gin-gonic。


还可以选择创建另一个包来保存与数据库连接相关的设置。然后它可以有一个包级全局,可以在以下位置初始化:main并在导入它的任何包中使用。

这样,您可以明确地看到正在导入数据库包。这是一些示例代码。

package database

var (
    // DBCon is the connection handle
    // for the database
    DBCon *sql.DB
)

package main

import "myApp/database"

func main() {

    var err error
    database.DBCon, err = sql.Open("postgres", "user=myname dbname=dbname sslmode=disable")

}

package user

import "myApp/database"

func Index() {
    // database handle is available here
    database.DBCon

    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与多个包共享全局定义的数据库连接 的相关文章

  • 根据值匹配数组

    我使用以下代码来解析 yaml 并应得到输出为runners对象和函数build应更改数据结构并根据以下结构提供输出 type Exec struct NameVal string Executer string 这是我尝试过的 但我不知道
  • 如何在 Go 中从 stdin 解析无限 json 数组?

    我正在尝试编写一个 i3status 的小替代品 一个与 i3bar 兼容的小程序进行通信this http i3wm org docs i3bar protocol html协议 他们通过标准输入和标准输出交换消息 两个方向的流都是一个无
  • Go 编程语言中的“方法需要指针接收器”

    我刚刚看到了 Go 编程语言的演示 并想尝试写几行 一切工作正常 直到我尝试在这种情况下使用界面 我该如何解决这个问题 package main import fmt type entity float32 func e entity in
  • benchmem 的输出

    使用内存分析器运行基准测试时 我看到以下输出 SomeFunc 100 17768876 ns op 111 B op 0 allocs op 我不明白输出 0 allocs op 但分配了 111 B 知道这意味着什么吗 我的函数是否在堆
  • 如何在 golang 中创建 .der 文件,与 openssl 相同

    openssl rsa in prevate pem outform DER pubout out public der 你可能会考虑像这样的图书馆google trillian https github com google trilli
  • Golang HTTP Post 错误:连接被拒绝

    我正在尝试向正在运行 PHP 应用程序的端口 8080 上的本地主机发送 post 请求 卷曲效果很好 curl data key asdf http localhost 8080 但在 Go 中我收到以下错误 Post http loca
  • Golang 有 libfaketime 替代品吗?

    我想自动化一些测试 我必须操纵系统时间来检查用 golang 编写的程序的身份验证行为 根据这个帖子 https stackoverflow com questions 36024872 libfaketime doesnt work wi
  • 交叉编译共享库

    我想知道是否有可能 如果是的话 如何 与 Go 交叉编译共享库 假设我有这段代码 package main import C export DoubleIt func DoubleIt x int int return x 2 func m
  • 使用ticker定期从经常变化的路径加载内存中的所有文件?

    我有一个应用程序需要从两个不同的路径读取文件 读取所有这些文件后 我需要将它们加载到内存中products map Path Full 这是内存中服务器启动期间需要加载的所有文件的路径 该路径将包含大约 50 个文件 每个文件大小约为 60
  • 指针和切片引用类型 - 接收器

    我认为一旦向我提出这个问题就会有点明显 但现在以下内容还没有点击 type Stack interface func stack Stack Push x interface stack append stack x 我有一个名为 Stac
  • Go 算术中处理浮点数精度?

    我对 Go 中精确减去 2 个浮点数的方法感兴趣 我尝试过使用math big图书馆 但我无法得到准确的结果 我用过big js https github com MikeMcl big jsJavascript 库解决了这个问题 Go 算
  • 如何在 Docker 容器中持久保存 go 1.11 模块?

    我正在将 Go 1 10 应用程序迁移到 Go 1 11 这还包括从dep https golang github io dep to mod https github com golang go wiki Modules用于管理依赖关系
  • 运行时错误:分配给 nil 映射中的条目

    我正在尝试生成一个地图 然后将其转换为 yaml 文件 如下所示 uid kasi cn Chaithra street fkmp nandan cn Chaithra street fkmp remya cn Chaithra stree
  • golang中的Reader接口和Read方法

    我正在关注 golang 之旅 我被要求 实现一个 rot13Reader 它实现 io Reader 并从 io Reader 读取 通过将 ROT13 替换密码应用于所有字母字符来修改流 我首先将方法实现到 rot13Reader ty
  • 如何将 json 字符串编组到 bson 文档以写入 MongoDB?

    我正在寻找的东西相当于文档 parse https api mongodb com java 3 2 org bson Document html parse java lang String 在golang中 这允许我直接从json创建b
  • 非本地包中的本地导入

    我知道应该避免本地进口 但在这种情况下有特殊情况需要 这是一个私人仓库 heroku buildpack 在go get 由于服务器上缺少私钥 与绝对 URL 一起使用时会出现此阶段 现在我得到这个错误local import in non
  • http:多余的response.WriteHeader调用

    我有一个HandleFunc 如果成功的话 我希望 显然 能够 sent a 200回复 在回复中写一条信息性消息 但是以下代码片段 在快乐路径中执行 if fullRun w Write byte successMsg w WriteHe
  • 如何在Go包之间共享测试接口?

    Go 不会在不同包的测试文件之间共享代码 因此测试接口的定义不会自动重用 在实践中我们如何解决这个问题 使用示例testing quick foo foo go package foo type Thing int const X Thin
  • Go 中的 Map 与 Switch 性能对比

    考虑这个基准 我们比较地图访问与切换 var code int32 0 10 100 100 0 10 0 10 100 14 1000 100 1000 0 0 10 100 1000 10 0 1000 12 var mapCode m
  • 如何在 GAE Standard Go 中缩小到 0 个实例

    我已将 Golang 应用程序部署到 Google Cloud Platform 的 App Engine 标准环境 我的 app yaml 包含以下几行 automatic scaling min idle instances 0 max

随机推荐

  • JTextPane 换行行为

    最近我一直在做一个Java文本编辑器项目 我想使用JTextPane更换旧的JTextArea以实现语法高亮 然而 一个JTextPane缺乏方法JTextArea 例如append getLineStartOffset 等 我想在我的课堂
  • 如何在 Spark 2.0 中启用笛卡尔连接? [复制]

    这个问题在这里已经有答案了 我必须在 Spark 2 0 中交叉连接 2 个数据帧 但遇到以下错误 用户类抛出异常 org apache spark sql AnalysisException Cartesian joins could b
  • 序列化器仅来自指定控制器的方法 - Spring、JSON Jackson

    我有 2 个控制器和一个具有自定义序列化字段的 get 方法 如下所示 JsonSerialize using MySerialization class 但我想在我从 A 控制器而不是 B 控制器调用方法时进行此序列化 我如何指定这一点
  • 使用 JUnit 内部类中的测试用例

    我读到构建单元测试 http haacked com archive 2012 01 02 structuring unit tests aspx每个类都有一个测试类 每个方法有一个内部类 我认为这似乎是一种组织测试的便捷方法 因此我在 J
  • 当从两个数据框构建绘图时有两个图例

    我有两个这样的数据框 library ggplot2 set seed 1 x1 rnorm 100 y1 rnorm 100 x2 rnorm 100 y2 rnorm 100 df1 data frame x x1 y y1 col1
  • 在 pdfmake 中嵌入背景图像

    我正在使用 pdfmakehttp bpampuch github io pdfmake index html gettingstarted http bpampuch github io pdfmake index html gettin
  • JavaPackage 对象不可调用错误:Pyspark

    像 dataframe show sqlContext read json 这样的操作工作正常 但大多数函数都会给出 JavaPackage object is not callable error 例如 当我这样做时 dataFrame
  • 当应用程序进入前台时查找当前视图。 IOS

    当应用程序激活时 我们如何找到当前哪个视图是第一响应者 我知道应用程序委托 applicationWillEnterForeground 和 applicationDidBecomeActive 在某些情况下将被调用 我如何使用它来亲密查看
  • django 模板中的 user.is_authenticated 遇到问题

    很抱歉 如果您在我之前问这个问题时尝试帮助我 不得不删除该问题 因为由于某种原因我不被允许编辑其他信息 我正在努力在我的 Django 网站上实现用户身份验证 一切正常 我的视图 模型 url 等都设置好了 用户可以注册 登录 注销 我遇到
  • 将 MarvinFramework 添加到 Tomcat7 上的 Web 应用程序

    我有一个JerseyWeb 应用程序运行于Tomcat并想要整合MarvinFramework用于图像处理 基本上我想减少噪音 灰度和缩放图像以进行进一步处理 The 马文框架 http marvinproject sourceforge
  • Cmder bash脚本执行

    我在 Windows 中创建了基本脚本 bin bash echo Hello 我正在使用 Cmder ConEmu 衍生品 我尝试使用 chmod 更改权限 但它们是相同的 我不知道如何执行这个脚本 正常的 Linux 方式是 hello
  • R 编译错误的 RGL 包

    尝试在 arch linux x86 64 上为 r 编译 rgl 我只复制了安装的错误部分 这是我最近更新 R 后发生的 知道如何解决这个问题吗 g I usr include R DNDEBUG DHAVE PNG H I usr in
  • 按位置列出观测值数量

    这里需要帮助 我正在尝试创建一个新列 使用纬度和经度列出餐厅 200 米范围内的餐厅数量 我在 stackoverflow 上找不到任何东西 而且我不是 R 忍者 任何帮助 将不胜感激 head business id restaurant
  • 带有azure ad的net core使用oidc和登录后浏览器后退按钮导致异常

    因此 我有一个新创建的 netcore 应用程序链接到我的 azure Active Directory 帐户 中间件设置如下 app UseCookieAuthentication new CookieAuthenticationOpti
  • 正确处理 React Hooks 以将摄像机流式传输到 HTML 视频元素

    我一直在尝试编写一个 React Hook 来处理从用户相机捕获的流式视频到 HTML 视频元素 我无法找到处理初始化和取消初始化相机和 HTML 视频元素的最佳方法 我尝试在挂钩末尾添加清理功能 但我的尝试最终导致视频反复重新初始化或出现
  • 使用 Codedom 生成 C# 自动属性

    有没有办法使用 Codedom 生成 C 自动属性or也许我可以使用另一组库 您可以使用 CodeSnippetTypeMember 类来实现此目的 例如 CodeTypeDeclaration newType new CodeTypeDe
  • 了解自动实现的属性

    我有一个使用自动实现属性的简单类 Public Class foo public foo public string BarName get set 显然 我在整个类中使用了变量 BarName 现在需要在设置属性值时添加逻辑 它必须全部大
  • opencv 对象跟踪的边界框定义

    如何定义采用 opencv tracker init 函数的边界框对象 是吗 xcenter ycenter boxwidht boxheight or xmin ymin xmax ymax or ymin xmin ymax xmax
  • 如何在 SwiftUI 中的 ForEach 中嵌入的 HStack 中设置相对宽度?

    我想创建属性列表 不使用列表视图 每个属性都是一个 HStack 其中包含两个文本 名称和值 我希望名称文本始终占整个 HStack 宽度的 30 而值文本则使用其余的水平空间 每个属性的高度取决于内容 我尝试通过以下观点来实现它 stru
  • 与多个包共享全局定义的数据库连接

    我读过一些关于如何处理数据库连接的 StackOverflow 答案 因为它是一个池 所以我们可以全局定义它并在多个 goroutine 中使用它 而且它是安全的 我遇到的问题是我已将 REST API 拆分为多个包 这些包中的每一个都需要