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_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.

Reply via email to