标签: database-connection

在Python中,如何在离开代码块之前确保数据库连接始终关闭?

我想尽可能地防止数据库连接被打开,因为这个代码将在密集使用的服务器上运行,这里的人已经告诉我应该尽快关闭数据库连接.

def do_something_that_needs_database ():
    dbConnection = MySQLdb.connect(host=args['database_host'], user=args['database_user'], passwd=args['database_pass'], db=args['database_tabl'], cursorclass=MySQLdb.cursors.DictCursor)
    dbCursor = dbConnection.cursor()
    dbCursor.execute('SELECT COUNT(*) total FROM table')
    row = dbCursor.fetchone()
    if row['total'] == 0:
        print 'error: table have no records'
        dbCursor.execute('UPDATE table SET field="%s"', whatever_value)
        return None
    print 'table is ok'
    dbCursor.execute('UPDATE table SET field="%s"', another_value)

    # a lot more of workflow done here

    dbConnection.close()

    # even more stuff would come below
Run Code Online (Sandbox Code Playgroud)

我相信当桌子上没有行时会打开数据库连接,所以我仍然不确定它是如何工作的.

无论如何,也许这是糟糕的设计,因为我可以在每个小块之后打开和关闭数据库连接execute.当然,我可以在这种情况下添加一个close权利return......

但是,我怎么能总是正确关闭数据库,而不必担心,如果我有return,或raise,或continue …

python database-connection nested

18
推荐指数
2
解决办法
2万
查看次数

如何形成正确的MySQL连接字符串?

我正在使用C#,我正在尝试连接到00webhost托管的MySQL数据库.

我收到了错误connection.Open():

这个参数没有mysql主机.

我检查过,一切似乎都很好.

string MyConString = "SERVER=mysql7.000webhost.com;" +
        "DATABASE=a455555_test;" +
        "UID=a455555_me;" +
        "PASSWORD=something;";
         MySqlConnection connection = new MySqlConnection(MyConString);
         MySqlCommand command = connection.CreateCommand();
         MySqlDataReader Reader;
         command.CommandText = "INSERT Test SET lat=" + 
             OSGconv.deciLat + ",long=" + OSGconv.deciLon;
         connection.Open();
         Reader = command.ExecuteReader();
         connection.Close();
Run Code Online (Sandbox Code Playgroud)

这个连接字符串有什么问题?

c# mysql database-connection

18
推荐指数
3
解决办法
10万
查看次数

Java中有多少个JDBC连接?

我有一个由大约15种方法组成的Java程序.并且,在程序的执行期间非常频繁地调用这些方法.目前,我正在每个方法中创建一个新连接并在其上调用语句(数据库在网络上的另一台机器上设置).

我想知道的是:我应该在main方法中只创建一个连接,并将其作为参数传递给需要连接对象的所有方法,因为它会显着减少程序中连接对象的数量,而不是创建并且在每种方法中经常关闭连接.

我怀疑我没有使用当前设计非常有效地使用资源,并且考虑到该程序将来可能会增长很多,因此还有很大的改进空间.

java performance database-connection jdbc

17
推荐指数
3
解决办法
3万
查看次数

我需要在LINQ查询后强制执行Dispose吗?

我的DBA说有太多的连接打开,他认为这是我的.net中的代码让他们开放.

我首先使用LINQ查询和EF代码.

示例方法:

 public List<Stuff> GetStuff()
 {
      var db = new DBContext();

      var results =  db.stuff.toList();

      return results;
 }
Run Code Online (Sandbox Code Playgroud)

一旦完成,我是否需要处理db var?我的理解是我不需要在EF和LINQ中.请指向我关于管理LINQ/EF和数据库连接的代码连接或最佳实践的Microsoft文档

更新:

我补充道

db.Connection.Close();
db.Dispose();
Run Code Online (Sandbox Code Playgroud)

执行两行后,我仍然在SQL中看到打开的连接.当我迫使它关闭时,有没有理由不关闭它?

c# entity-framework database-connection idisposable

17
推荐指数
4
解决办法
5096
查看次数

mongo php副本连接很慢

这没有延迟:

$connection = new MongoClient("mongodb://localhost:27017", array("replicaSet" => REPLICASET,'username'=>USER, 'password'=>PASSWORD, 'db'=>DATABASE));
Run Code Online (Sandbox Code Playgroud)

但是,当我从副本集添加所有主机时,这最多需要10秒.PHP驱动程序(1.6.7)

$connection = new MongoClient("mongodb://".HOST_1.":27017,".HOST_2.":27017,".HOST_3.":27018", array("replicaSet" => REPLICASET,'username'=>USER, 'password'=>PASSWORD, 'db'=>DATABASE));
Run Code Online (Sandbox Code Playgroud)

在日志中,延迟似乎在每个连接处.以下是日志的摘录:

[22-Jun-2015 12:04:41 Australia/ACT] PHP Notice:  CON     FINE: Connecting to tcp://ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017 (ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017;launch;launch/launch/55a850dad20e018890350ece678dc293;15873) with connection timeout: 60.000000 in /home/user/public_html/test.php on line 52
[22-Jun-2015 12:04:47 Australia/ACT] PHP Notice:  CON     INFO: stream_connect: Not establishing SSL for ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017 in /home/user/public_html/test.php on line 52
Run Code Online (Sandbox Code Playgroud)

当我进入主服务器并尝试从终端快速连接时.

mongo --host "launch/host:27017,ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017,host2:27018" --authenticationDatabase launch -u USERNAME -p PASSWORD
Run Code Online (Sandbox Code Playgroud)

为什么PHP需要这么长时间才能连接?


7月20日更新:

我已将主服务器上的mongo更新为2.6.10但我的测试页面仍需要5秒才能加载.这就是我试图连接的方式:

error_reporting(E_ALL);
MongoLog::setLevel(MongoLog::ALL);
MongoLog::setModule(MongoLog::ALL);

try {
    $connection = new …
Run Code Online (Sandbox Code Playgroud)

database-connection mongodb

17
推荐指数
1
解决办法
1117
查看次数

决定数据库连接池大小的思考

我正在开发基于开源java的应用程序,即xwiki.insie hibernate.cfg.xml我可以看到参数connection.pool_size和statement_cache.siz的值为2(对于每个).我的应用程序将在最多时间内拥有100个用户.现在我的问题是什么应该是理想的连接池大小.对我来说,2号看起来很少.如果一次连接100个用户98用户必须等待grtting连接被释放?在我的情况下,我应该将连接池大小保持为100吗?

我正在使用microsoft sql server.

除此之外,最大连接池大小也有限制.它依赖于webserver(在我的情况下是tomcat)还是数据存储供应商(ms sql server)?

java sql-server database-connection connection-pooling flexy-pool

16
推荐指数
2
解决办法
2万
查看次数

AWS RDS PostgreSQL错误"剩余连接插槽保留用于非复制超级用户连接"

在仪表板中,我看到数据库实例当前有22个打开的连接,阻止了与错误的新连接:

剩余的连接槽保留用于非复制超级用户连接.

我正在从EC2实例上运行的Web服务API访问数据库,并始终保持最佳实践:

Connection connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
Class.forName(DB_CLASS);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(SQL_Query_String);
...
resultSet.close();
statement.close();
connection.close();
Run Code Online (Sandbox Code Playgroud)
  1. 我可以在代码中做些其他事情吗?

  2. 我应该在数据库管理中做些什么吗?

  3. 有没有办法定期关闭连接?

sql postgresql database-connection amazon-web-services amazon-rds

16
推荐指数
4
解决办法
2万
查看次数

Java Connection.close是否会回滚?

Java Connection.close是否会回滚到finally块?

我知道.Net SqlConnection.close做到了.

有了这个,我可以在没有捕获的情况下制作try/finally块...

例:

try {
    conn.setAutoCommit(false);
    ResultSet rs = executeQuery(conn, ...);
    ....
    executeNonQuery(conn, ...);
    ....

    conn.commit();
} finally {
   conn.close();
}
Run Code Online (Sandbox Code Playgroud)

java database-connection transactions

15
推荐指数
4
解决办法
2万
查看次数

是否需要在web.config中保护连接字符串?

所以我使用SQL身份验证在web.config中使用连接字符串.

当然人们说这可能是一个漏洞,因为你用明文存储密码.

但是,据我所知,IIS从不提供web.config,而web.config应该只对管理员和IIS具有读访问权限.因此,如果黑客已获得对Web服务器的访问权限,那么我使用的加密方式无关紧要,因为私钥将位于Web服务器上.

不会通过混淆将加密连接字符串归类为安全性吗?

是否值得加密web.config连接字符串并将私钥存储在Web服务器上?

此外,当然如果我不使用SSL,我将通过HTTP以明文传输连接字符串.如果我使用SSL,那么这个问题也应该减轻.

.net asp.net connection-string database-connection web-config

15
推荐指数
1
解决办法
1万
查看次数

如何让Rails在数据库停机后自动重新建立数据库连接

在数据库停机后,Rails将首先抛出此错误一次:

ActiveRecord :: StatementInvalid:NativeException:org.postgresql.util.PSQLException:连接被拒绝.检查主机名和端口是否正确以及postmaster是否接受TCP/IP连接.

从那时起,即使在数据库备份之后,每次调用数据库都会出现以下错误:

ActiveRecord :: StatementInvalid:ActiveRecord :: JDBCError:此连接已关闭.

为了让服务器再次运行,我必须重新启动rails服务器.这对我们来说并不理想,因为我们的产品工程师希望对我们的数据库进行维护,而不必恢复依赖于数据库的所有服务.所以,我想知道 - 有没有办法自动让Rails尝试重新建立数据库连接或建议的方式来获得这种行为?

我尝试过的事情:

我已经尝试在我的数据库选项中将reconnect设置为true,然后我可以杀死单个数据库连接,rails将重新建立连接.但是,它不会在数据库中断之后.我发现从命令控制台我可以通过调用来恢复连接

的ActiveRecord :: Base的:: establish_connection

所以也许找到一个干净的地方让rails调用上面的命令,这会有用吗?有什么建议?

sql database-connection ruby-on-rails

15
推荐指数
1
解决办法
5872
查看次数