【问题标题】:Inserting new data into a SQLite database using Terminal?使用终端将新数据插入 SQLite 数据库?
【发布时间】:2013-01-09 19:48:16
【问题描述】:

我正在尝试将数据插入到用于 Rails 应用程序的 SQLite 数据库中。

我最初以为我可以使用 SQLite 管理器和 insert into tablename (value) values ('value'),但是它没有向表中插入任何内容,也没有产生错误。

我做错了吗?有没有办法直接用 Rails 做到这一点?

我想我可以使用某种 activerecord 迁移,只需要rake db:migrate,但是我一直找不到合适的命令。

【问题讨论】:

  • 您是否刷新/提交了 SQLLite 命令?在任何情况下,您也可以通过普通的 ActiveRecord 模型调用或通过迁移来使用 Rails 控制台——不知道您做了什么,就不可能知道它为什么不起作用。
  • values('value) -- 是有问题的拼写错误,还是查询中真的缺少撇号? (应该是值('value'))
  • 如果您正在寻找方向,可以尝试发现rake db:seed
  • 安东,这只是一个错字:p
  • 根据 Yevgeniy Anfilofyev 提供的信息,我选择了rake db:seed 作为解决此问题的方法。它很简单,提供了一种留在 RoR 环境中的方法,并且仍然可以管理和编辑 SQlite 数据库。

标签: ruby-on-rails ruby ruby-on-rails-3 sqlite


【解决方案1】:

rails runner 是一种利用 Rails 运行时的好方法,无需为您的应用程序加载整个 Rails 堆栈。它将为您的底层数据库提供完整的 ActiveRecord 资源,从而轻松进行数据库操作。

来自runner 内置帮助:

轨道跑者 用法:runner [options]('Some.ruby(code)' 或文件名) -e, --environment=name 指定运行器运行的环境(测试/开发/生产)。 默认:开发 -h, --help 显示此帮助信息。 您还可以将 runner 用作脚本的 shebang 行,如下所示: -------------------------------------------------- ------------ #!/usr/bin/env /Users/greg/junk/foo/script/rails runner Product.all.each { |p| p.price *= 2 ; p.保存! }

我已经多次将它用于将 Rails 下的数据加载到数据库中的作业。对于您需要做的事情,这将是一个很好的解决方案。

Rails task: script/runner or rake?”也值得一读以获取更多信息。

【讨论】:

  • 感谢您提供的信息。我最终使用rake db:seed 作为我的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
相关资源
最近更新 更多