Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django模型使用数据库服务器时间_Python_Mysql_Django_Django Models - Fatal编程技术网

Python django模型使用数据库服务器时间

Python django模型使用数据库服务器时间,python,mysql,django,django-models,Python,Mysql,Django,Django Models,我在不同的位置有两个单独的django服务器和一个mysql服务器 使用django模型,尝试创建/更新对象时(如下代码所示)。结果是3列都具有相同的django服务器本地时间值。如何获得数据库服务器本地时间时,这样做 我的模型: class Test(models.Model): id = models.AutoField(primary_key = True, null = False) create = models.DateTimeField(auto_now_add=T

我在不同的位置有两个单独的django服务器和一个mysql服务器

使用django模型,尝试创建/更新对象时(如下代码所示)。结果是3列都具有相同的django服务器本地时间值。如何获得数据库服务器本地时间时,这样做

我的模型:

class Test(models.Model):
    id = models.AutoField(primary_key = True, null = False)
    create = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)
    test = models.DateTimeField(null=True)
我的代码:

y = Test()
y.test = datetime.now()
y.save()
结果

    id  create               update               test                  
------  -------------------  -------------------  ------------------- 
     6  2013-10-07 06:57:04  2013-10-07 06:57:04  2013-10-07 06:57:04  

我认为如果不设置数据库时区,你就无法做你想做的事情。让我们看看你的每个约会都意味着什么:

create = models.DateTimeField(auto_now_add=True)
它会自动将日期设置为添加日期时的时间

update = models.DateTimeField(auto_now=True)
它会自动将日期设置为启动进程(web进程或命令)的时间

它将日期设置为进程的时间(Django进程运行的地方)

要获取数据库时间,您可以将数据库的时区存储在设置中,并在必要时使用它。您不能为此使用任何自动生成的字段


另一个解决方案是手动(通过原始查询)获取数据库中的本地时间。

我认为,如果不设置数据库时区,您就无法做您想做的事情。让我们看看你的每个约会都意味着什么:

create = models.DateTimeField(auto_now_add=True)
它会自动将日期设置为添加日期时的时间

update = models.DateTimeField(auto_now=True)
它会自动将日期设置为启动进程(web进程或命令)的时间

它将日期设置为进程的时间(Django进程运行的地方)

要获取数据库时间,您可以将数据库的时区存储在设置中,并在必要时使用它。您不能为此使用任何自动生成的字段


另一个解决方案是在数据库上手动获取本地时间(通过原始查询)。

如果您在Django中处理此问题,Django将在将数据保存到数据库之前设置这些字段。在这种情况下,Django将根据应用程序服务器(Django运行的服务器)设置时间

您必须对MySql安装进行一些设置(如果尚未设置)。然后您必须重新创建表或在数据库中修改它们(我想Django模型定义无法处理这个问题)。这是一个

示例sql
createtable
语句如下所示

CREATE TABLE test_test (
    create DATETIME DEFAULT CURRENT_TIMESTAMP,
    update DATETIME DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
)
如果yotr表中已有数据,则可以执行ALTERs'而不是重新创建表

然后,您必须编辑yor模型,并将相关的datetime字段设置为null,以便MySql可以设置它们

class Test(models.Model):
    id = models.AutoField(primary_key = True, null = False)
    create = models.DateTimeField(null=True)
    update = models.DateTimeField(null=True)
    test = models.DateTimeField(null=True)

如果您在Django中处理这个问题,Django将在将数据保存到数据库之前设置这些字段。在这种情况下,Django将根据应用程序服务器(Django运行的服务器)设置时间

您必须对MySql安装进行一些设置(如果尚未设置)。然后您必须重新创建表或在数据库中修改它们(我想Django模型定义无法处理这个问题)。这是一个

示例sql
createtable
语句如下所示

CREATE TABLE test_test (
    create DATETIME DEFAULT CURRENT_TIMESTAMP,
    update DATETIME DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
)
如果yotr表中已有数据,则可以执行ALTERs'而不是重新创建表

然后,您必须编辑yor模型,并将相关的datetime字段设置为null,以便MySql可以设置它们

class Test(models.Model):
    id = models.AutoField(primary_key = True, null = False)
    create = models.DateTimeField(null=True)
    update = models.DateTimeField(null=True)
    test = models.DateTimeField(null=True)

你想这样做的原因是什么?通常,最好将时间存储在UTC中,然后在演示过程中转换为适当的时区。原因是我有一个db服务器,用于少数web服务器。为了保持一致,所有数据都应使用db servertime@Hardy你试过django数据库函数的Now()了吗?你解决了吗?如果是,你是如何做到的?你想这样做的原因是什么?通常,最好将时间存储在UTC中,然后在演示过程中转换为适当的时区。原因是我有一个db服务器,用于少数web服务器。为了保持一致,所有数据都应使用db servertime@Hardy你试过django数据库函数的Now()了吗?你解决了吗?如果是,你是怎么做的?