gpt4 book ai didi

python - 具有管理功能的复制元素

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:02 25 4
gpt4 key购买 nike

我尝试运行此代码:

# -*- coding: utf-8 -*-

from django.core.management.base import BaseCommand

class Command(BaseCommand):
def handle(self, *args, **options):

from blogs.models import Blog, Post
from sitename.settings import DEFAULT_CHARSET

for blog in Blog.objects.all().using('old'):
try:
Blog.objects.get(old_id=blog.id)
continue
except:
pass
new_blog = Blog(
name = blog.name,
description=blog.description,
old_id = blog.id
)
new_blog.save()

但我有异常(exception):

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

我用谷歌搜索了这个问题并找到了解决方案:

name = blog.name.encode('ascii','ignore')

结果令人沮丧:所有俄语符号均已被删除。

"Пост номер 15-14" => "15-14"

如何正确复制数据?

最佳答案

我想,您的一个或两个数据库的字符集有问题,您应该检查从旧数据库中获得的编码以及新数据库中的编码。

你的循环看起来很奇怪,Django在QuerySet上有一个很好的函数get_or_create方法,所以有一个很好的版本:

for blog in Blog.objects.all().using('old'):
Blog.objects.get_or_create(old_id=blog.id, defaults={'name': blog.name,
'description': blog.description})

关于python - 具有管理功能的复制元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com