sqlite3后端DB为django - 奇怪的错误

时间:2014-07-04 17:23:47

标签: django python-2.7 sqlite google-analytics rollback

因此,对于一个项目,我正在查询一堆Google Analytics数据并将其存储到Sqlit3数据库中。现在我正在编写一个脚本,用于检索几个月内每天的历史数据。脚本运行大约一个月没有错误,然后抛出这个奇怪的错误,我找不到很多信息。任何人都可以帮我弄清楚它为什么扔这个。这是某种内存错误吗?

这里是追溯:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
399, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
75, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 40, in im
port_module
    __import__(name)
  File "C:\Users\root.BrandonYates-PC\Documents\GitHub\Weblife-Repo\bipol_django
_site\ga\management\commands\backlog.py", line 10, in <module>
    class backLog():
  File "C:\Users\root.BrandonYates-PC\Documents\GitHub\Weblife-Repo\bipol_django
_site\ga\management\commands\backlog.py", line 42, in backLog
    p = Populate(str(date.fromordinal(i)), str(date.fromordinal(i)))
  File "C:\Users\root.BrandonYates-PC\Documents\GitHub\Weblife-Repo\bipol_django
_site\ga\management\commands\fillTest.py", line 126, in __init__
    PageTrackingData())
  File "C:\Users\root.BrandonYates-PC\Documents\GitHub\Weblife-Repo\bipol_django
_site\ga\management\commands\fillTest.py", line 56, in fill
    element.save()
  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 545, in sa
ve
    force_update=force_update, update_fields=update_fields)
  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 573, in sa
ve_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, upda
te_fields)
  File "C:\Python27\lib\site-packages\django\db\transaction.py", line 319, in __
exit__
    connection.rollback()
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 180,
 in rollback
    self._rollback()
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 144,
 in _rollback
    return self.connection.rollback()
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 99, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 144,
 in _rollback
    return self.connection.rollback()
django.db.utils.OperationalError: cannot rollback - no transaction is active

相关守则部分:

for i in range(d1, d2):
    print "Date Range: " + str(date.fromordinal(i))
    p = Populate(str(date.fromordinal(i)), str(date.fromordinal(i)))
#inside populate 
self.fill(ecommerce, EcommerceData())

self.fill(self.query.get_data(qsf.getPageTrackingMetrics(), 
          qsf.getPageTrackingDimensions()), 
          PageTrackingData())

self.fill(self.query.get_data(qsf.getTrafficSourceMetrics(), 
                              qsf.getTrafficSourceDimensions()),
                              TrafficData())

self.fill(self.query.get_data(qsf.getAdwordsMetrics(), 
                              qsf.getAdwordsDimensions()), AdwordsData())

def fill(self, data, object):
    """
    Create an object list
    Iterate through the row data, create and append each object to the list
    Add the analytics data key to the user data, insert the row by saving
    """
    rows = []
    for row in data:
        #print row
        rows.append( object.create( row ) )

    for element in rows:
        element.analytics = self.analytic
        #print element
        element.save()

1 个答案:

答案 0 :(得分:1)

好吧所以它似乎是某种与内存相关的错误。如果您收到此错误,则可能通过ram运行了太多变量。简而言之,您需要使您的代码更有效地处理您正在处理的数据,或者将数据切分为更易于管理的数据块。