我正在尝试为我的一个应用程序制定数据迁移。我正在使用这里提到的声誉系统 - django-reputation
在我的forward方法中,我有以下代码 -
orm['reputation.reputation'].objects.log_reputation_action(user = user_x, originating_user = user_y, action_value = 10, target_object = sample_obj)
Run Code Online (Sandbox Code Playgroud)
但是在运行迁移时,我收到以下错误 -
AttributeError: 'Manager' object has no attribute 'log_reputation_action'
Run Code Online (Sandbox Code Playgroud)
我已经冻结reputation了数据迁移中的应用程序。请让我知道我在这里做错了什么。
提前致谢。
我有一个具有以下配置的 AWS Lightsail 虚拟机
主要问题是 RAM 不足以满足我当前的工作并且面临内存不足的问题。
我想将 RAM 增加到至少2GB或更多。
我已经在当前计算机上安装了许多软件和必要的设置。
要点是,我不想经历再次重新安装所有软件并进行设置的痛苦,这根本不是一个容易的过程。我在 MongoDB docker 实例中也有可用的数据。
迁移到具有 2GB RAM、软件+设置和数据的新虚拟机的最佳解决方案是什么?
data-migration virtual-machine amazon-web-services amazon-lightsail
为已更新的iPhone应用程序迁移Core Data DB更改,建议采取哪些步骤?
在发布Core Data应用程序之前是否需要(应该)完成任何先前步骤?
我有两个数据库,一个被调用Natalie_playground,一个被调用LiveDB.因为我想练习插入,更新的东西,我想从复制一些表LiveDB来Natalie_playground.
我要复制的表称为:
Customers, Computers, Cellphones, Prices
我试图做的是(使用SSMS)右键单击一个表,但那里没有Copy!
我们有一个中等规模的SSDT项目(约100个表),它被部署到几十个不同的数据库实例中.作为构建过程的一部分,我们生成一个.dacpac文件,然后当我们准备升级数据库时,我们生成一个发布脚本并对数据库运行它.某些数据库实例会在不同时间升级,因此我们必须为这些升级和版本控制提供结构化流程.
大多数生成的迁移脚本正在删除和(重新)创建过程,函数,索引和执行任何结构更改,以及部署后脚本中包含的一些数据脚本.这两个与数据相关的项目我想知道如何在项目中最好地构建:
版本之间需要自定义数据迁移
静态或参考数据
版本之间需要自定义数据迁移
有时我们希望在升级过程中执行一次性数据迁移,我不确定将其纳入我们的SSDT项目的最佳方式.例如,最近我添加了一个新的位列dbo.Charge.HasComments来包含基于另一个表的(冗余)派生数据,并将通过触发器保持同步.令人讨厌但必要的性能改进(仅在仔细考虑和测量后才添加).作为升级的一部分,SSDT生成的发布脚本将包含必要的ALTER TABLE和CREATE TRIGGER语句,但我还想根据另一个表中的数据更新此列:
update dbo.Charge
set HasComments = 1
where exists ( select *
from dbo.ChargeComment
where ChargeComment.ChargeId = Charge.ChargeId )
and HasComments = 0
Run Code Online (Sandbox Code Playgroud)
在我的SSDT项目中包含此数据迁移脚本的最佳方法是什么?
目前,我将每种类型的迁移都放在一个单独的文件中,该文件包含在部署后脚本中,因此我的Post-Deployment脚本最终看起来像这样:
-- data migrations
:r "data migration\Update dbo.Charge.HasComments if never populated.sql"
go
:r "data migration\Update some other new table or column.sql"
go
Run Code Online (Sandbox Code Playgroud)
这是正确的方法,还是有一些方法可以更好地配合SSDT及其版本跟踪,因此当SSDT发布针对已经处于更新版本的数据库运行时,这些脚本甚至都不会运行.我可以拥有自己的表来跟踪已经运行了哪些迁移,但是如果有一种标准的方法可以执行此操作,则不希望自己滚动.
静态或参考数据
一些数据库表包含我们称之为静态或参考数据的内容,例如可能的时区列表,设置类型,货币,各种"类型"表等.目前我们通过为每个表运行一个单独的脚本来填充这些表.部署后脚本.每个静态数据脚本都将所有"正确"的静态数据插入到表变量中,然后根据需要插入/更新/删除静态数据表.根据表格,仅插入或仅插入和删除但不更新现有记录可能是合适的.所以每个脚本看起来像这样:
-- table listing all the correct static data
declare @working_data table (...)
-- add all the static data …Run Code Online (Sandbox Code Playgroud) 我有一个模特A,
Class A < ActiveRecord::Base
has_many: names, class_name: 'B'
Run Code Online (Sandbox Code Playgroud)
和模型B.
class B < ActiveRecord::Base
belongs to :A
Run Code Online (Sandbox Code Playgroud)
并且数据库中已经存在大量数据.
如何编写迁移以将它们从一对多迁移到多对多关系?我更喜欢使用
has_many: through
Run Code Online (Sandbox Code Playgroud)
如果可能的话.
编写db迁移并不难,但是如何迁移数据呢?
我几乎成功地将我的ZODB(一小部分文件夹,包括从其他文件夹中获取的资源)的摘录转移到另一个Plone实例; showstopper是:在导入期间,我的对象不会被写入.这是我的导出脚本:
[transmogrifier]
pipeline =
sitewalker
xmlwalker
uidextractor
encapsulator
manifestexporter
fileexporter
marshaller
propertiesexporter
commentsexporter
datacorrector
portletsexporter
writer
EXPORTING
[sitewalker]
blueprint = quintagroup.transmogrifier.sitewalker
path =
folder1
folder2
[xmlwalker]
blueprint = collective.transmogrifier.sections.xmlwalker
[uidextractor]
# my own section which parses the html text of the given fields,
# checks the href and src attributes for UIDs, and injects entries
# for the refered objects into the pipeline
blueprint = my.transmogrifier.uidextractor
inspect_fields =
text
description
notes
[encapsulator]
blueprint = plone.app.transmogrifier.mimeencapsulator
mimetype = item/_mimetype
field …Run Code Online (Sandbox Code Playgroud) 我有一个很长的数据迁移,我正在做的是纠正早期的错误迁移,其中某些行创建不正确.我正在尝试根据旧列为新列分配值,但是,有时这会导致完整性错误.当发生这种情况时,我想扔掉造成完整性错误的那个
这是一段代码:
def load_data(apps, schema_editor):
MyClass = apps.get_model('my_app', 'MyClass')
new_col_mapping = {old_val1: new_val1, ....}
for inst in MyClass.objects.filter(old_col=c):
try:
inst.new_col = new_col_mapping[c]
inst.save()
except IntegrityError:
inst.delete()
Run Code Online (Sandbox Code Playgroud)
然后在我Migration班上的操作中我做
operations = [
migrations.RunPython(load_data)
]
Run Code Online (Sandbox Code Playgroud)
运行迁移时出现以下错误
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block
Run Code Online (Sandbox Code Playgroud)
我觉得这样做
with transaction.atomic():
Run Code Online (Sandbox Code Playgroud)
某处是我的解决方案,但我不确定正确的地方在哪里.更重要的是,我想了解为什么这是必要的
除了存储为字符串、数字等的其他一些元数据信息之外,我还有一些二进制数据要传输。我拥有的二进制数据是作为 blob 列存储在数据库中的图像文件,我想在 csv 文件中包含 blob 列,并且将csv文件存储在文件系统或 sftp 服务器中,我想它存储在哪里并不重要。
如何将二进制数据存储为csv文件中的另一列?以这种方式传输二进制数据是一个好习惯吗?
Laravel 附带了数据库迁移,用于管理有关数据库结构的CRUD 操作,但是处理实际数据迁移的适当/推荐/标准化方法是什么?
我的问题是,数据迁移是否应该直接在数据库迁移文件中进行?应该是播种机吗?它应该是从数据库迁移中分派的作业吗?这样的逻辑该何去何从。有时,根据数据库迁移的作用,这些数据迁移会变得异常复杂,本着最大化可读性和保持职责分离的精神,我觉得逻辑属于其他地方。
我想,这个问题更多地归因于 OOP 编程结构和整个实践,而不是 Laravel 特定的,但 Laravel 是我现在正在使用的框架,因此在这方面提出了我的问题。
data-migration ×10
django ×2
sql-server ×2
activerecord ×1
binary-data ×1
conceptual ×1
core-data ×1
csv ×1
django-south ×1
file ×1
integration ×1
iphone ×1
laravel ×1
migration ×1
plone ×1
plone-4.x ×1
sql ×1