我有一个遗留数据库,其中一些表包含复合主键.我通过运行manage.py inspectdb命令得到的模型看起来像这样.
class MyTable(models.Model):
field1_id = models.IntegerField(db_column='field1id', primary_key=True)
is_favorite = models.BooleanField(db_column='isfavorite', default=False, null=False)
is_admin = models.BooleanField(db_column='isadmin', default=False, null=False)
role = models.IntegerField(default=USER_GUEST, null=False)
field2 = models.BooleanField(null=False, default=True)
field3 = models.BooleanField(null=False, default=True)
is_active = models.BooleanField(db_column='isactive', null=False, default=True)
user = models.ForeignKey(
CustomUser, models.DO_NOTHING, db_column='userid', primary_key=True)
class Meta:
managed = False
db_table = 'mytable'
unique_together = (('user', 'field1_id'),)
Run Code Online (Sandbox Code Playgroud)
我可以正常获取数据.但是,当我想save()在某个模型实例上运行命令时,会出现问题.查询django执行不正确.例如:
>>> from web_services.apps.my_app.models import MyTable
>>> g = MyTable.objects.get(field1_id=12)
>>> g.is_active = True
>>> g.save()
>>> connection.queries[-1]
{'time': '0.000', 'sql': 'UPDATE …Run Code Online (Sandbox Code Playgroud) mysql django django-models legacy-database composite-primary-key
我正在尝试将遗留数据从MS SQL数据库迁移到我的Rails应用程序中.我在freetds中添加了正确连接的配置.在我的Gemfile中,我分别添加了tiny_tds和activerecord-sqlserver-adapter.
我创建了一个文件来存放旧数据库中的类以转换为ActiveRecord:
class LegacyUser < ActiveRecord::Base
establish_connection :legacy
set_table_name 'users'
end
.
.
.
Run Code Online (Sandbox Code Playgroud)
database.yml的
legacy:
adapter: sqlserver
mode: odbc
dsn: legacy_db_name
host: db_host_name
database: legacy_db_name
port: 1433
username: username
password: password
Run Code Online (Sandbox Code Playgroud)
然后我有rake任务来转换数据:
legacy.rake
desc 'migrate users'
task :users => :environment do
require 'lib/tasks/legacy_classes'
LegacyUser.each do |user|
begin
new_user = User.new
new_user.attributes = {
:firstname => user.firstname,
:lastname => user.lastname,
:email => user.email,
:created_at => Time.now,
:updated_at => Time.now
}
new_user.save!
puts "User #{user.id} successfully …Run Code Online (Sandbox Code Playgroud) sql-server freetds legacy-database ruby-on-rails-4 rails-activerecord
我们正在尝试将Hibernate与一个使用大量复合键的数据库一起使用,这让我们感到非常头疼.不幸的是,我们无法更改架构,因此我们必须在字段之间进行大量额外的映射.我们仅限于使用JPA 1.0和Hibernate 3.3.
到目前为止,我们遇到的最大问题是使用2个值的复合键在两个实体之间进行一对一关联,其中表对这些列具有不同的名称(DB具有命名约定每列的特定于表的前缀.)
每当我们执行查询时,都会遇到以下异常:
Caused by: org.hibernate.TypeMismatchException Provided id of the wrong type for class com.business.entity.InvestorIssuerEmailEntity.
Expected: class com.business.entity.InvestorIssuerEmailEntityPK, got class com.business.entity.InvestorIssuerEntityPK;
Run Code Online (Sandbox Code Playgroud)
这些表的两个类InvestorIssuerEntity和InvestorIssuerEmailEntity具有可选的@OneToOne关联(在某些情况下,InvestorIssuer在InvestorIssuerEmail中没有匹配的记录):
@IdClass(InvestorIssuerEntityPK.class)
@Table(name = "T090_INVESTOR_ISSUER")
@Entity
InvestorIssuerEntity
@Column(name = "T090_091_INVESTOR_ID", nullable = false, insertable = true,
updatable = true, length = 18, precision = 0)
@Id
private Long investorId;
@Column(name = "T090_102_ISSUER_ID", nullable = false, insertable = true,
updatable = true, length = 18, precision = 0)
@Id
private Long issuerId;
(other fields omitted)
@OneToOne(optional …Run Code Online (Sandbox Code Playgroud) 我是ruby和rails的新手,我很难将MVC技术与数据库视图结合起来.我正在处理一个遗留数据库,它有几个用于生成报告的视图.
我迷路的地方是如何实际使用数据库视图.它应该放在模型中吗?如果是这样的话究竟是什么样子?
例如,遗留数据库有一个名为qryTranscriptByGroup的视图.它在遗留应用程序中用于SQL语句,例如"SELECT*FROM qryTranscriptByGroup WHERE group ='test_group'".这会返回少量通常小于100的记录.
如果我创建一个模型,Transcript,我如何定义像Transcript.find_by_group(group)这样的方法?同样,似乎我可能需要阻止任何其他"查找"方法,因为它们在此上下文中将无效.
还有一个事实是视图是只读的,我需要阻止任何创建,更新或销毁它的尝试.
也许我完全以错误的方式解决这个问题.最重要的是,我需要从几个表(模型?)中获取信息,这些表代表有关用户的信息(成绩单).实际上是一个或多个用户(成绩单复数).
-谢谢!
我是CQRS的初学者并且有一些问题.
背景是我们拥有20世纪80年代的遗留系统.我们希望实现一个瘦框架,供与之通信的新应用程序使用.
我们的想法是使用CQRS来实现这个框架,但我的问题是我们应该如何做到这一点.数据库和底层结构不会改变.
问题是系统和与它的通信非常慢.使用的协议是Telnet,FTP和一些自定义协议.