标签: legacy-database

使用遗留数据库在django项目中使用复合主键

我有一个遗留数据库,其中一些表包含复合主键.我通过运行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

5
推荐指数
1
解决办法
3158
查看次数

如何在Rails中连接到MS SQL

我正在尝试将遗留数据从MS SQL数据库迁移到我的Rails应用程序中.我在freetds中添加了正确连接的配置.在我的Gemfile中,我分别添加了tiny_tdsactiverecord-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

4
推荐指数
1
解决办法
5537
查看次数

JPA OneToOne关联,其中2个实体使用复合主键但使用不同的列名?

我们正在尝试将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)

orm hibernate jpa legacy-database composite-primary-key

2
推荐指数
1
解决办法
1万
查看次数

处理rails中的旧数据库视图

我是ruby和rails的新手,我很难将MVC技术与数据库视图结合起来.我正在处理一个遗留数据库,它有几个用于生成报告的视图.

我迷路的地方是如何实际使用数据库视图.它应该放在模型中吗?如果是这样的话究竟是什么样子?

例如,遗留数据库有一个名为qryTranscriptByGroup的视图.它在遗留应用程序中用于SQL语句,例如"SELECT*FROM qryTranscriptByGroup WHERE group ='test_group'".这会返回少量通常小于100的记录.

如果我创建一个模型,Transcript,我如何定义像Transcript.find_by_group(group)这样的方法?同样,似乎我可能需要阻止任何其他"查找"方法,因为它们在此上下文中将无效.

还有一个事实是视图是只读的,我需要阻止任何创建,更新或销毁它的尝试.

也许我完全以错误的方式解决这个问题.最重要的是,我需要从几个表(模型?)中获取信息,这些表代表有关用户的信息(成绩单).实际上是一个或多个用户(成绩单复数).

-谢谢!

views ruby-on-rails models legacy-database

2
推荐指数
1
解决办法
1009
查看次数

遗留系统的CQRS

我是CQRS的初学者并且有一些问题.

背景是我们拥有20世纪80年代的遗留系统.我们希望实现一个瘦框架,供与之通信的新应用程序使用.

我们的想法是使用CQRS来实现这个框架,但我的问题是我们应该如何做到这一点.数据库和底层结构不会改变.

问题是系统和与它的通信非常慢.使用的协议是Telnet,FTP和一些自定义协议.

  1. 我们在实施时应该怎么想?
  2. (也许还有其他技术比CQRS更适合这个?)

c# legacy domain-driven-design legacy-database cqrs

2
推荐指数
1
解决办法
197
查看次数