Thanks Ben,
Honestly I do not know if I understood what you suggest, sorry... it's
actually my fault as I'm still trying to learn web2py (reading the manual,
etc.).

My web2py-app is actually working, but I still have lost of data to load in
the DB. Most of the data to populate de DB is created outside the app
itself (this may change in the future, but unfortunatelly it is like that
now).

As this data creation is done outside my web2py-app I wanted the scripts
creating this data to check which data has already been uploaded to the
web2py-app database. In order to do so I wrote a python script which is
meant to be run apart from the web2py-app to check if the data is already
in the DB (calling the snippet below), if it's not create it and then load
it.

problemsuri = 'mysql://root:web2py@localhost/xakemate'
dbpath =
r'C:\Users\Jon\Downloads\web2py_src\web2py\applications\xakemate_scratch\databases'

def checkproblem(posFEN):
    print "checking",posFEN
    dbproblems = DAL(problemsuri,folder=dbpath,auto_import=True)

    query = (dbproblems.problem.fen == posFEN)
    problem = dbproblems(query).select(orderby=dbproblems.problem.id
).first()
    print "DUPLICATED problem",problem
    return problem

But when I do run the code I get an error telling me "AttributeError: 'DAL'
object has no attribute 'problem'".

Do I need to define the table I'm trying to access again ('cause it's
already defined in models folder, but not in this script)?
If I do need to define the table again, How should I do it?
Regards, Jon.



On Mon, Feb 11, 2019 at 3:43 PM Ben Duncan <linux...@gmail.com> wrote:

> Oh yeah. One thing I missed explaining is that I spend the end of last
> year creating a python library that would take file layouts I've gleaned
> from a 4GL, old cobol systems and an Informix database, and some Oracle
> Financials.
>
> I've create a "layout template" that the library will generate the create
> table, primary keyes, secondary keyes, foreign keyes, grants and views.
> As part of the library it will generate the pydal "define" statements as
> well.
>
>
> *Ben Duncan*
> DBA / Chief Software Architect
> Mississippi State Supreme Court
> Electronic Filing Division
>
>
> On Mon, Feb 11, 2019 at 8:36 AM Ben Duncan <linux...@gmail.com> wrote:
>
>> I'm not sure what your statement means, however i will give it my best
>> shot to explain> I'm new to web2py myself.
>> Her goes:
>>
>> In my models folder i have several different sub folders:
>> ar, ap ,gl ...etc...
>>
>> Each has the definition. For example under ar there is the
>> dbf_arfiles_dal.py which starts likes this:
>>
>> db.define_table('ar_cusmas_billing_info',
>>     Field('company_number', type='reference client.company_number',
>> ondelete='CASCADE'),
>>     Field('client_number', type='reference client.client_number',
>> ondelete='CASCADE'),
>>     Field('bank_name', type='string', length=30),
>>     Field('bank_route', type='integer'),
>>     Field('bank_acct', type='integer'),
>>     Field('cc', type='string', length=2),
>>     Field('ccno', type='integer'),
>>     Field('exp1', type='date'),
>>     Field('holder1', type='string', length=50),
>>     Field('cc2', type='string', length=2),
>>     Field('ccno2', type='integer'),
>>     Field('exp2', type='date'),
>>     Field('holder2', type='string', length=50),
>>     primarykey=['company_number','client_number'],
>>     migrate=False)
>>
>> db.define_table('ar_cusmas_pclass',
>>     Field('company_number', type='reference client.company_number',
>> ondelete='CASCADE'),
>> ......... and so one.
>>
>> In 0.py , I start it off as:
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> # -*- coding: utf-8 -*-
>>
>> #
>> -------------------------------------------------------------------------
>> # AppConfig configuration made easy. Look inside private/appconfig.ini
>> # Auth is for authenticaiton and access control
>> #
>> -------------------------------------------------------------------------
>> import datetime
>> from gluon.contrib.appconfig import AppConfig
>> from gluon.settings import global_settings
>> from gluon import current
>> from gluon.tools import Crud, Service
>> # from gluon.tools import Auth
>>
>> from gluon.storage import *
>> from pydal.contrib import portalocker
>> from pydal._compat import basestring, StringIO, integer_types, xrange,
>> BytesIO, to_bytes, long
>> from gluon.storage import Messages, Settings, Storage
>> from gluon.utils import web2py_uuid
>>
>> from gluon.validators import CLEANUP, CRYPT, IS_ALPHANUMERIC,
>> IS_DATE_IN_RANGE, IS_DATE, \
>>     IS_DATETIME_IN_RANGE, IS_DATETIME, IS_DECIMAL_IN_RANGE, \
>>     IS_EMAIL, IS_EMPTY_OR, IS_EXPR, IS_FLOAT_IN_RANGE, IS_IMAGE, \
>>     IS_IN_DB, IS_IN_SET, IS_INT_IN_RANGE, IS_IPV4, IS_LENGTH, \
>>     IS_LIST_OF, IS_LOWER, IS_MATCH, IS_EQUAL_TO, IS_NOT_EMPTY, \
>>     IS_NOT_IN_DB, IS_NULL_OR, IS_SLUG, IS_STRONG, IS_TIME, \
>>     IS_UPLOAD_FILENAME, IS_UPPER, IS_URL
>>
>> # from gluon.validators import CRYPT, IS_EMAIL, IS_EQUAL_TO,
>> IS_INT_IN_RANGE, IS_LOWER, IS_MATCH, IS_NOT_EMPTY, \
>> #     IS_NOT_IN_DB
>> from pydal.objects import Table, Field, Row
>>
>> ........ (and so on till I get to the bottom)
>>
>> #
>> -------------------------------------------------------------------------
>> # Local application settings
>> #
>> -------------------------------------------------------------------------
>>
>> settings = Storage()
>>
>> settings.migrate = False
>> settings.title = request.application
>> settings.subtitle = T('Ben Duncan')
>> settings.author = 'Ben Duncan'
>> settings.author_email = 'y...@example.com'
>> settings.keywords = 'Ben Duncan'
>> settings.description = 'Ben Duncan'
>> settings.layout_theme = 'Default'
>> settings.database_uri = 'postgres://
>> web2py:web2py@10.13.70.47:7103/ac03303_live'
>> settings.security_key = 'c4d5c7ec-97b4-474b-98d3-9c1582dad510'
>> settings.email_server = 'localhost'
>> settings.email_sender = 'y...@example.com'
>> settings.email_login = ''
>> settings.login_method = 'local'
>> settings.login_config = ''
>> settings.plugins = []
>> session.is_logged_in = 'NO'
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> Then in db.py I have:
>>
>> # -*- coding: utf-8 -*-
>>
>> #
>> -------------------------------------------------------------------------
>> # Database model
>> #
>> -------------------------------------------------------------------------
>>
>> db = DAL(settings.database_uri, pool_size=10, migrate_enabled=False,
>> fake_migrate_all=True )
>>
>> #
>> -------------------------------------------------------------------------
>> # Here is sample code if you need for
>> # - email capabilities
>> # - authentication (registration, login, logout, ... )
>> # - authorization (role based authorization)
>> # - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss)
>> # - old style crud actions
>> # (more options discussed in gluon/tools.py)
>> #
>> -------------------------------------------------------------------------
>> # host names must be a list of allowed host names (glob syntax allowed)
>> # auth = Auth(db, host_names=configuration.get('host.names'))
>> # auth = Auth(db, secure=True)
>> #
>> -------------------------------------------------------------------------
>> #auth = Auth(db,signature=False)
>> crud = Crud(db)
>>
>> ...... (every thing else is commented out  as well. this is because I am
>> doing my own custome authentication and other
>> things - which MAYBE the grief I'm causing myself. ..)
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>>
>> Hopefully this should get you going
>>
>> If I've missed anything, Anthony can you fill in ?
>>
>> Good Luck ...
>>
>>
>> *Ben Duncan*
>> DBA / Chief Software Architect
>> Mississippi State Supreme Court
>> Electronic Filing Division
>>
>>
>> On Sat, Feb 9, 2019 at 10:56 AM Jon Subscripted <
>> jonsubscripti...@gmail.com> wrote:
>>
>>> Hi Ben,
>>> Inside my app folder I do have the table defined, but not in my script
>>> (accessing   the db outside web2py).
>>> I thought that the folder path reference solved this (*).
>>> Should i add the define table in my script?
>>> Thanks and regards, Jon.
>>>
>>> (*) I guess that’s why .table files are kept even when SQLite is no
>>> longer usted.
>>>
>>> El El vie, 8 feb 2019 a las 14:28, Ben Duncan <linux...@gmail.com>
>>> escribió:
>>>
>>>> Did you set up the db_define table for the database in models.
>>>>
>>>> For example, the accounting package I am working on for our Supreme
>>>> Court has and external postgres database.
>>>> From the DDL, I've created, for example, the "ship to code" file (we
>>>> reuse for something else)
>>>>
>>>> ---------------------------------------------------------------------------------------------------------------------
>>>> db.define_table('ar_ship_code',
>>>>     Field('company_number', type='reference company.company_number',
>>>> ondelete='CASCADE'),
>>>>     Field('code', type='string', length=10),
>>>>     Field('short_desc', type='string', length=20),
>>>>     Field('description', type='string', length=255),
>>>>     Field('notes', type='text'),
>>>>     primarykey=['company_number','code'],
>>>>     migrate=False)
>>>>
>>>> ---------------------------------------------------------------------------------------------------------------------------
>>>>
>>>> For each table you want to access, you will need a "db.define_table"
>>>> entry in the model directory.
>>>>
>>>> Hope this helps
>>>> *Ben Duncan*
>>>> DBA / Chief Software Architect
>>>> Mississippi State Supreme Court
>>>> Electronic Filing Division
>>>>
>>>>
>>>> On Fri, Feb 8, 2019 at 7:17 AM Jon Subscripted <
>>>> jonsubscripti...@gmail.com> wrote:
>>>>
>>>>> Hi everyone,
>>>>> I'm trying to access the data stored in my app db from a different
>>>>> piece of software (apart from my web2py app). But I get an error
>>>>> AttributeError.
>>>>>
>>>>> Based on the manual:
>>>>>
>>>>>
>>>>> http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Using-DAL-without-define-tables
>>>>>
>>>>> I used the code below (from IDLE):
>>>>>
>>>>> import sys
>>>>>
>>>>> sys.path.append(r'C:\Users\Jon\Downloads\web2py_src\web2py\gluon')
>>>>>
>>>>> from gluon import DAL
>>>>>
>>>>> dbpath =
>>>>> r'C:\Users\Jon\Downloads\web2py_src\web2py\applications\xakemate_scratch\databases'
>>>>> problemsuri = 'mysql://root:web2py@localhost/xakemate'
>>>>> pos = 'test_position'
>>>>>
>>>>> db = DAL(problemsuri,folder=dbpath,auto_import=True)
>>>>> query = (db.problem.fen == pos)
>>>>> problem = db(query).select(orderby=db.problem.id).first()
>>>>>
>>>>> I get the following error:
>>>>>
>>>>> Traceback (most recent call last):
>>>>>   File "<pyshell#33>", line 1, in <module>
>>>>>     query = (dbproblems.problem.fen == posFEN)
>>>>>   File "C:\Python27\lib\site-packages\gluon\dal.py", line 7150, in
>>>>> __getattr__
>>>>>     return ogetattr(self, key)
>>>>> AttributeError: 'DAL' object has no attribute 'problem'
>>>>>
>>>>> From what I understood the tables should be auto-imported and thus
>>>>> known to my code. Why is it not finding the table?
>>>>>
>>>>> In addition to that I've got a couple of questions:
>>>>>
>>>>> 1st Should I import PYDAL (from pydal import DAL)  or GLUON.DAL (as I
>>>>> did)?
>>>>>
>>>>> 2nd Even when using the db different from SQLite should we point to
>>>>> "applications/myapp/databases"?
>>>>>
>>>>> Thanks in advance, Jon.
>>>>>
>>>>>
>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>>  Libre
>>>>> de virus. www.avast.com
>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>> <#m_-719463918673358794_m_6847217380560436693_m_-8586355468110605202_m_-6215750885323799383_m_5787271047422858639_m_-5898545075541849496_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>
>>>>> --
>>>>> Resources:
>>>>> - http://web2py.com
>>>>> - http://web2py.com/book (Documentation)
>>>>> - http://github.com/web2py/web2py (Source code)
>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "web2py-users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to web2py+unsubscr...@googlegroups.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>>> Resources:
>>>> - http://web2py.com
>>>> - http://web2py.com/book (Documentation)
>>>> - http://github.com/web2py/web2py (Source code)
>>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "web2py-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to web2py+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> Resources:
>>> - http://web2py.com
>>> - http://web2py.com/book (Documentation)
>>> - http://github.com/web2py/web2py (Source code)
>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "web2py-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to web2py+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to