|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
I get a "can't convert String into Integer (TypeError)" error about the
print statement in the following code. The sqlite3-ruby library has been installed successfully on my OS X 10.5 system. The code executes fine if I replace the print statement with: print "hello". Any suggestions? All I want to do is iterate through each row in the return set (rows) of the executed query and look at specific column values. I have run out of ideas on how to fix this and would appreciate any . Thanks... #!/usr/bin/ruby require "sqlite3" query = "select * from moz_bookmarks" db = SQLite3: atabase.new("/Users/me/Desktop/places.sqlite")rows = db.execute(query) rows.each do |row| print row['title'] end -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
2008/6/20 The Doobs <thedoobs@gmail.com>:
> I get a "can't convert String into Integer (TypeError)" error about the > print statement in the following code. The sqlite3-ruby library has been > installed successfully on my OS X 10.5 system. The code executes fine if > I replace the print statement with: print "hello". Any suggestions? All > I want to do is iterate through each row in the return set (rows) of the > executed query and look at specific column values. I have run out of > ideas on how to fix this and would appreciate any . Thanks... > > #!/usr/bin/ruby > > require "sqlite3" > > query = "select * from moz_bookmarks" > db = SQLite3: atabase.new("/Users/me/Desktop/places.sqlite")> rows = db.execute(query) # Rows is an array of arrays.... > rows.each do |row| # At this point, "row" is a straightforward array - you need to use Integer indices > print row['title'] # This fails because you cannot use a string as an integer into an array. Try puts row[0] > end > -- > Posted via http://www.ruby-forum.com/. > > -- JJ |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On 6/20/08, The Doobs <thedoobs@gmail.com> wrote:
> I get a "can't convert String into Integer (TypeError)" error about the > print statement in the following code. The sqlite3-ruby library has been > installed successfully on my OS X 10.5 system. The code executes fine if > I replace the print statement with: print "hello". Any suggestions? All > I want to do is iterate through each row in the return set (rows) of the > executed query and look at specific column values. I have run out of > ideas on how to fix this and would appreciate any . Thanks... > > #!/usr/bin/ruby > > require "sqlite3" > > query = "select * from moz_bookmarks" > db = SQLite3: atabase.new("/Users/me/Desktop/places.sqlite")> rows = db.execute(query) > rows.each do |row| > print row['title'] > end Perhaps it would if you uploaded places.sqlite somewhere (like Mediafire) so we can try the program. Otherwise, even the schema would Les |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On 6/21/08, Leslie Viljoen <leslieviljoen@gmail.com> wrote:
> On 6/20/08, The Doobs <thedoobs@gmail.com> wrote: > > I get a "can't convert String into Integer (TypeError)" error about the > > print statement in the following code. The sqlite3-ruby library has been > > installed successfully on my OS X 10.5 system. The code executes fine if > > I replace the print statement with: print "hello". Any suggestions? All > > I want to do is iterate through each row in the return set (rows) of the > > executed query and look at specific column values. I have run out of > > ideas on how to fix this and would appreciate any . Thanks... > > > > #!/usr/bin/ruby > > > > require "sqlite3" > > > > query = "select * from moz_bookmarks" > > db = SQLite3: atabase.new("/Users/me/Desktop/places.sqlite")> > rows = db.execute(query) > > rows.each do |row| > > print row['title'] > > end > > > Perhaps it would if you uploaded places.sqlite somewhere (like > Mediafire) so we can try the program. Otherwise, even the schema would > Nevermind, it's easy to create such a database. Les |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
This program gives what you want:
#!/usr/bin/ruby require "sqlite3" query = "select * from moz_bookmarks" db = SQLite3: atabase.new("test.sqlite")db.results_as_hash = true rows = db.execute(query) rows.each do |row| #p row #puts row.class #p row.methods puts row['title'] end The commented bits will you with debugging in the future. They enable you to see what kind of objects you are dealing with. The answer to selecting rows by column name is to use db.results_as_hash as above. This was easily discovered via google. Go here: http://sqlite-ruby.rubyforge.org/ Click on the 'FAQ' link. Les |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Bryan JJ Buckley wrote:
> 2008/6/20 The Doobs <thedoobs@gmail.com>: >> require "sqlite3" >> >> query = "select * from moz_bookmarks" >> db = SQLite3: atabase.new("/Users/me/Desktop/places.sqlite")>> rows = db.execute(query) > # Rows is an array of arrays.... >> rows.each do |row| > # At this point, "row" is a straightforward array - you need to use > Integer indices >> print row['title'] > # This fails because you cannot use a string as an integer into an > array. Try > puts row[0] Using integer indices did the trick. Thanks! I was trying to use the column name 'title'. By the way, the places.sqlite file is the file where Firefox 3 stores its bookmarks and some other stuff. On OS X, it can be found in ~/Library/Application Support/Firefox/Profiles/*.default/. -- Posted via http://www.ruby-forum.com/. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
You're welcome.
![]() @leslie - cool, I didn't know about the results_as_hash, very handy. -- JJ |
|
![]() |
| Outils de la discussion | |
|
|