Try the following code:
##################################
#!/usr/bin/python
import sys
import time
sys.path.append('/Users/pcode/Desktop/mongodb_test/web2py')
from gluon.dal import DAL, Field
db = DAL('mongodb://127.0.0.1:5984/db')
db.define_table('m_test',
Field('name','text'),
Field('number','integer'))
So a quick check of the current mongoDBAdaptor provides the following error
stream:
#########################################################
##### The above code produces the following error
#########################################################
Traceback (most recent call last):
File "./test_mdb_1.py", line 7, in <module>
db = DAL('mongodb://127.0.0.1:5984/db')
File "/Users/pcode/Desktop/mongodb_test/web2py/gluon/dal.py", line 3724,
in __init__
raise RuntimeError, "Failure to connect, tried %d times:\n%s" %
(attempts, error)
RuntimeError: Failure to connect, tried 5 times:
'MongoDBAdapter' object has no attribute '_uri'
#########################################################
####### Make the following changes
#########################################################
Line number 3342
FROM:
m =
re.compile('^(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>.+)$').match(self._uri[10:])
TO:
m =
re.compile('^(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>.+)$').match(self.uri[10:])
Line number 3344
FROM:
raise SyntaxError, "Invalid URI string in DAL: %s" % self._uri
TO:
raise SyntaxError, "Invalid URI string in DAL: %s" % self.uri
#########################################################
####### New error listed below
#########################################################
Traceback (most recent call last):
File "./test_mdb_1.py", line 7, in <module>
db = DAL('mongodb://127.0.0.1:5984/db')
File "/Users/pcode/Desktop/mongodb_test/web2py/gluon/dal.py", line 3724,
in __init__
raise RuntimeError, "Failure to connect, tried %d times:\n%s" %
(attempts, error)
RuntimeError: Failure to connect, tried 5 times:
port must be an instance of int
#########################################################
######### Make the following change
#########################################################
Line 3351
FROM:
port = m.group('port') or 27017
TO:
port = 27017
#############################################################################
######### Now the code connects to the server but the error below is
reported
##############################################################################
Traceback (most recent call last):
File "./test_mdb_1.py", line 14, in <module>
Field('number','integer'))
File "/Users/pcode/Desktop/mongodb_test/web2py/gluon/dal.py", line 4032,
in define_table
polymodel=polymodel)
File "/Users/pcode/Desktop/mongodb_test/web2py/gluon/dal.py", line 513, in
create_table
% dict(length=field.length)
TypeError: unsupported operand type(s) for %: 'type' and 'dict'
#########################################################
####### It is not clear to me why this error is generated
####### So report back to the list
#########################################################
On Wed, May 4, 2011 at 9:24 PM, joseph simpson <[email protected]> wrote:
> OK, I will find some time in the next few days to look at this..
>
> Thanks for your quick response to the question..
>
>
>
>
> On Wed, May 4, 2011 at 8:02 AM, Massimo Di Pierro <
> [email protected]> wrote:
>
>> Please help me try if
>>
>> db=DAL('mongodb://127.0.0.1:5984/db')
>> db.define_table('mytable',...)
>> db.mytable.insert(...)
>>
>> try different field types and let me know which ones fail.
>>
>> works.
>>
>> On May 4, 9:42 am, "David J." <[email protected]> wrote:
>> > Ahh; Ok;
>> >
>> > Perhaps I will use MongEngine for now and then come back to DAL once we
>> > have time for it;
>> >
>> > I think its not worth your time to build in support for something not so
>> > many people are using;
>> >
>> > Besides anyone can use MongoEngine with Web2py without much difficulty;
>> >
>> > I did some simple tests before just to see; I am going to spend more
>> > time with it now and see what problems I run into;
>> >
>> > Thanks.
>> >
>> > On 5/4/11 10:30 AM, Massimo Di Pierro wrote:
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > > mongodb with DAL does not currently work but, if you help with tests,
>> > > we could make it work
>> >
>> > > On May 4, 8:56 am, "David J."<[email protected]> wrote:
>> > >> Is this in trunk;
>> >
>> > >> I will start a new project today and use Mongo For DB
>> >
>> > >> I think I tried it last month and I had some problems; I didnt have
>> the
>> > >> time to look into it.
>> >
>> > >> I will update and try again.
>> >
>> > >> Thanks.
>> >
>> > >> On 5/4/11 9:30 AM, Massimo Di Pierro wrote:
>> >
>> > >>> fixing it now. Looks like not many people testing it. :-)
>> > >>> On May 3, 9:56 pm, joseph simpson<[email protected]> wrote:
>> > >>>> The current dal.py file contains the following code, between lines
>> > >>>> 3381 and 3404:
>> > >>>> ADAPTERS = {
>> > >>>> 'sqlite': SQLiteAdapter,
>> > >>>> 'sqlite:memory': SQLiteAdapter,
>> > >>>> 'mysql': MySQLAdapter,
>> > >>>> 'postgres': PostgreSQLAdapter,
>> > >>>> 'oracle': OracleAdapter,
>> > >>>> 'mssql': MSSQLAdapter,
>> > >>>> 'mssql2': MSSQL2Adapter,
>> > >>>> 'db2': DB2Adapter,
>> > >>>> 'informix': InformixAdapter,
>> > >>>> 'firebird': FireBirdAdapter,
>> > >>>> 'firebird_embedded': FireBirdAdapter,
>> > >>>> 'ingres': IngresAdapter,
>> > >>>> 'ingresu': IngresUnicodeAdapter,
>> > >>>> 'sapdb': SAPDBAdapter,
>> > >>>> 'jdbc:sqlite': JDBCSQLiteAdapter,
>> > >>>> 'jdbc:sqlite:memory': JDBCSQLiteAdapter,
>> > >>>> 'jdbc:postgres': JDBCPostgreSQLAdapter,
>> > >>>> 'gae': GoogleDatastoreAdapter, # discouraged, for backward
>> > >>>> compatibility
>> > >>>> 'google:datastore': GoogleDatastoreAdapter,
>> > >>>> 'google:sql': GoogleSQLAdapter,
>> > >>>> 'couchdb': CouchDBAdapter,
>> > >>>> 'mongodb': CouchDBAdapter,
>> > >>>> }
>> > >>>> The last line:
>> > >>>> 'mongodb': CouchDBAdapter,
>> > >>>> Maybe should be --- 'mongodb': MongoDBAdapter,
>>
>
>
>
> --
> Joe Simpson
>
> Sent From My DROID!!
>
--
Joe Simpson
Sent From My DROID!!