查看从PHP到Python的代码转换

查看从PHP到Python的代码转换,php,python,django,migrate,Php,Python,Django,Migrate,我正在将我的网站从PHP切换到Django(Python 3.5)。我需要帮助将下面的视图统计函数转换为Python 数据库结构如下: CREATE TABLE blog_website_view_stats ( reference bigserial NOT NULL, blog_website_reference bigint NOT NULL, language_iso text NOT NULL, year bigint NOT NULL, mon

我正在将我的网站从PHP切换到Django(Python 3.5)。我需要帮助将下面的视图统计函数转换为Python

数据库结构如下:

CREATE TABLE blog_website_view_stats
(
    reference bigserial NOT NULL,
    blog_website_reference bigint NOT NULL,
    language_iso text NOT NULL,
    year bigint NOT NULL,
    month bigint NOT NULL,
    day_1 bigint,
    day_2 bigint,
    day_3 bigint,
    ...
    total_month_views bigint NOT NULL,
)
这是PHP代码

/**
 * Entry View Stats
 *
 * @param $blog_reference
 */
public function EntryViewStats(
    $blog_reference
)
{

    /**
     * @var \Actsministries\Database\Entity\RonsHome\BlogWebsiteViewStats $result
     */
    $result = $this->entityManager->getRepository('Actsministries\Database\Entity\RonsHome\BlogWebsiteViewStats')
                                  ->findOneBy(
                                      [
                                          'blogWebsiteReference' => $blog_reference,
                                          'languageIso'          => 'en-US',
                                          'month'                => date('n'),
                                          'year'                 => date('Y')
                                      ]
                                  );

    if (!is_object($result)) {

        $setday = 'setDay' . date('j');

        $this->entityManager->beginTransaction();

        // does not exist
        $view_stats_update = (new EntityBlogWebsiteViewStats())->setBlogWebsiteReference($blog_reference)
                                                                ->setLanguageIso('en-US')
                                                                ->setMonth(date('n'))
                                                                ->setYear(date('Y'))
                                                                ->setTotalMonthViews('1')
                                                                ->$setday(
                                                                    '1'
                                                                );

        $this->entityManager->persist($view_stats_update);

        $this->entityManager->flush($view_stats_update);

        $this->entityManager->commit();
    } else {

        $this->entityManager->beginTransaction();

        $setday = 'setDay' . date('j');
        $getday = 'getDay' . date('j');

        $result->$setday($result->$getday() + 1);
        $result->setTotalMonthViews($result->getTotalMonthViews() + 1);

        $this->entityManager->persist($result);

        $this->entityManager->flush($result);

        $this->entityManager->commit();

    }
}
到目前为止,我提出的python代码是:

@transaction.atomic()
def stats(self, context):
    """stats

    :param dict context: Context

    :return: None|bool
    """

    result = BlogWebsiteViewStats.objects.update_or_create(
        blog_website_reference=1,
        language_iso='en-US',
        year=timezone.now().year,
        month=timezone.now().month,
        ('day_' + str(timezone.now().day))=datetime.utcnow() + timedelta(days=1),
        total_month_views=1
    )

    result.save()
我正在努力:

  • 如何表示当月当前日期的列(如第1天、第2天、第3天等)
  • 如何将1添加到运行总计“总计月视图”
  • 我对Python非常陌生。我的Python代码中很可能还有其他我不知道的错误