首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >请求设置DEFAULT_INDEX_TABLESPACE

请求设置DEFAULT_INDEX_TABLESPACE
EN

Stack Overflow用户
提问于 2017-12-01 09:32:29
回答 1查看 1.3K关注 0票数 3

我正在制作一个populate.py脚本,将数据从mysql数据库传输到django mysqlite数据库。

当我运行我的populate.py脚本时,我一直收到这个错误:

代码语言:javascript
运行
复制
Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured.
You must either define the environment variable DJANGO_SETTINGS_MODULE
or call settings.configure() before accessing settings.

因此,我从我的研究中发现,我必须添加settings.configure(),所以我这样做了,但仍然得到了错误,并且不再知道它可能是什么。

这就是我要进口的东西:

代码语言:javascript
运行
复制
import django
import time
import datetime
import os
from mysql.connector import connection
from django.conf import settings
from user import models
from techportal import models

settings.configure()
django.setup()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'itdb.settings')

我使用这个函数来传输数据:

代码语言:javascript
运行
复制
# Insert all technologies
def technologies():
    current = con_mysql.cursor()
    current_query = ("SELECT technology_id title, description, company_id, author, contactor, publish_date, edit_date, is_hidden, visible FROM technologies")
    current.execute(current_query)

    for (technology_id, title, description, company_id, author, contactor, publish_date, edit_date, is_hidden, visible) in current:
        # Converts datetime to (int)unixtimestamp
        if (publish_date == "0000-00-00 00:00:00"):
            publish_date = time.mktime(datetime.datetime.strptime(str(datetime.datetime.now().replace(microsecond=0)),
                                                                   "%Y-%m-%d %H:%M:%S").timetuple())
        else:
            publish_date = time.mktime(datetime.datetime.strptime(publish_date, "%Y-%m-%d %H:%M:%S").timetuple())

        # Converts datetime to (int)unixtimestamp
        if (edit_date == "0000-00-00 00:00:00"):
            edit_date = time.mktime(datetime.datetime.strptime(str(datetime.datetime.now().replace(microsecond=0)),
                                                                   "%Y-%m-%d %H:%M:%S").timetuple())
        else:
            edit_date = time.mktime(datetime.datetime.strptime(edit_date, "%Y-%m-%d %H:%M:%S").timetuple())

        mdl, succeeded = models.PortalTechnology.objects.get_or_create(
            author_id=author,
            basetech_id=technology_id,
            is_hidden=is_hidden,
            visible=visible
        )
        mdl.save()

        mdl, succeeded = models.Technology.objects.get_or_create(
            name=title,
            long_description=description,
            created_on=publish_date,
            supplier_id=company_id
        )
        mdl.save()

    current.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 12:19:57

根据这个答案这个答案,您需要首先设置env变量,然后调用django.setup()

文件your_script.py

代码语言:javascript
运行
复制
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
import django
django.setup()

# here goes the rest of your script ...
import time
import datetime
from mysql.connector import connection
from user import models
from techportal import models

def technologies():
    ...

这一点是必要的,因为django 1.7 (参见发布说明)。

settings.configure()不应该是这样的必要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47590361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档