小编TBZ*_*Z92的帖子

在 Python 中跨多个函数使用 MySQLdb 连接和游标的正确方法是什么

我对 Python 及其 MySQLdb 连接器有点陌生。我正在编写一个 API 来使用 RESTful 方法从数据库返回一些数据。在 PHP 中,我将连接管理部分封装在一个类中,充当 MySQL 查询的抽象层。

在 Python 中:

  • 我很早就在脚本中定义了连接: con = mdb.connect('localhost', 'user', 'passwd', 'dbname')

  • 然后,在所有后续方法中:

    import MySQLdb as mdb
    
    def insert_func():
    
    with con: 
    
    cur = con.cursor(mdb.cursors.DictCursor)
    cur.execute("INSERT INTO table (col1, col2, col3) VALUES (%s, %s, %s)", (val1, val2, val3) )
    
    rows = cur.fetchall()
    
    #do something with the results
    
    return someval
    
    Run Code Online (Sandbox Code Playgroud)

    等等。

  • 我使用mdb.cursors.DictCursor是因为我更喜欢能够以关联数组的方式访问数据库列。

现在问题开始出现:

  • 在一个函数中,我发出一个插入查询以创建一个具有唯一“groupid”的“组”。

  • 这个“组”有一个创建者。数据库中的每个用户都在表中他/她行的“组”列中保存一个 JSON 数组。

  • 因此,当我创建一个新组时,我想将 groupid 分配给创建它的用户。

  • 我使用类似的功能更新用户的记录。

  • 我已经将“插入”和“更新”部分包装在两个单独的函数定义中。

  • 我第一次运行脚本时,一切正常。

  • 第二次运行脚本时,脚本无休止地运行(我怀疑是由于与 MySQL 数据库的某些空闲连接)。

  • 当我使用 CTRL + …

python mysql-python

5
推荐指数
1
解决办法
1114
查看次数

Scala中OutOfMemoryError的原因是什么?

我刚刚开始学习来自Python的Scala.我在Scala中尝试了一个基本的文件处理任务.任务是"[ ... ]"使用正则表达式从数据文件中删除子串.该脚本成功处理前几个文件,然后抛出java.lang.OutOfMemoryError: Java heap space错误.发生错误的数据文件大约是70MB,我有16GB的RAM供我使用.(前面的6个文件的文件大小<100Kb,第一个文件作为例外:5.5MB).

我的问题是:是什么导致了 OutOfMemoryError,我怎样才能改变我的方法以防止它发生?我不明白为什么会这样.我在调试内存错误方面经验不足,因为Python在内存管理方面相对宽容.

关于编码风格或我使用的方法的任何其他评论都非常受欢迎 - 我渴望学习.

Regexer.scala:

import scala.io.Source 
import java.io._

object Regexer {

  def main(args: Array[String]): Unit = {

    val filenames = Source.fromFile("all_files.txt").getLines()

    for (fn <- filenames) {

        val datafile:String = Source.fromFile(fn).mkString

        val new_data:String = datafile.replaceAll(raw"\[.*?\]", "")

        val file = new File(fn)         
        val bw = new BufferedWriter(new FileWriter(file))
        bw.write(new_data)
        bw.close()


    }   
  } 
}
Run Code Online (Sandbox Code Playgroud)

all_files.txt 是一个文件,包含要处理的所有文件的路径(因为它们位于子目录中).

最后,执行时抛出完整的错误消息:

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3332)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596) …
Run Code Online (Sandbox Code Playgroud)

java scala heap-memory out-of-memory

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

标签 统计

heap-memory ×1

java ×1

mysql-python ×1

out-of-memory ×1

python ×1

scala ×1