Are you able to connect to the database (either the one on your server or the copy you have downloaded to your machine) via a Python shell using https://docs.python.org/2/library/sqlite3.html (i.e., no web2py or DAL)?
Anthony On Friday, August 10, 2018 at 11:00:43 AM UTC-4, BlueShadow wrote: > > Hi thanks for all the answers. > Just before I got your answers I found this article: > https://www.team-mediaportal.com/wiki/display/MediaPortal1/Repair+SQLite+Database > > which i followed to check the integrety of my database. and it says *OK* > @stifan: it is the last server backup. the last manual backup i did was in > 2016. (and I changed quite a bit since that time. > my db.py looks like this: > # -*- coding: utf-8 -*- > > ######################################################################### > ## This scaffolding model makes your app work on Google App Engine too > ## File is released under public domain and you can use without limitations > ######################################################################### > > ## if SSL/HTTPS is properly configured and you want all HTTP requests to > ## be redirected to HTTPS, uncomment the line below: > # request.requires_https() > import datetime > import os > from plugin_multiselect_widget import ( > hmultiselect_widget, vmultiselect_widget, > rhmultiselect_widget, rvmultiselect_widget, > ) > > #if not request.env.web2py_runtime_gae: > ## if NOT running on Google App Engine use SQLite or other DB > db = DAL('sqlite://storage.sqlite', migrate=False,lazy_tables=True) > try: > db.executesql("PRAGMA journal_mode=WAL;") > except: > pass > > response.generic_patterns = ['*'] if request.is_local else [] > > > > > > auth = Auth(db, hmac_key="I am not sharing the key") > #crud, service, plugins = Crud(db), Service(), PluginManager() > > ## append auth tables > auth.settings.extra_fields['auth_user']= [ > Field('username', unique=True,requires=IS_NOT_IN_DB(db, > 'auth_user.username')), > Field('address'), > Field('country','reference Land'), > Field('city'), > Field('zip'), > Field('favouritemovie'), > Field('birthday','date',requires=IS_DATE()), > Field('sex','reference Sex'), > Field('phone'), > Field('registration_date','datetime',default=datetime.datetime.now(), > writable=False,readable=False), > Field('newsletter','reference Newsletter') > ] > auth.settings.password_min_length = 5 > auth.settings.registration_requires_verification = True > > ## create all tables needed by auth if not custom tables > > db.define_table('Sex', > Field('Name'), > format = '%(Name)s' > ) > > db.define_table('Land', > Field('Name'), > format = '%(Name)s' > ) > """f = open('countries.txt', 'r') #for some weird reason > this does not work. > countries=f.readlines() > for c in countries: > db.Land.update_or_insert(Name=c) > > f.close()""" > db.define_table('Newsletter', > Field('Name'), > format = '%(Name)s' > ) > auth.define_tables(username=True, migrate=False) > > ## configure email > mail=auth.settings.mailer > mail.settings.server = 'logging' or 'smtp.gmail.com:587' > mail.settings.sender = 'y...@gmail.com' > mail.settings.login = 'username:password' > > ## configure auth policy > auth.settings.registration_requires_verification = False > auth.settings.registration_requires_approval = False > auth.settings.reset_password_requires_verification = True > > ## if you need to use OpenID, Facebook, MySpace, Twitter, Linkedin, etc. > ## register with janrain.com, write your domain:api_key in > private/janrain.key > from gluon.contrib.login_methods.rpx_account import use_janrain > use_janrain(auth,filename='private/janrain.key') > > > db.define_table('myerror', > Field('Time','datetime',default=datetime.datetime.now()), > Field('code','integer'), > Field('request_URL'), > Field('client'), > Field('useragent'), > ) > > > db.define_table('Sort', > Field('Name'), > format = '%(Name)s' > ) > db.Sort.Name.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, 'Sort.Name')] > > > db.define_table('Genre', > Field('Name'), > format = '%(Name)s' > ) > db.Genre.Name.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, 'Genre.Name')] > > db.define_table('Category', > Field('Name'), > format = '%(Name)s' > ) > db.Category.Name.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, > 'Category.Name')] > > > db.Land.Name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'Land.Name')] > > > > db.define_table('Quelle', > Field('Name',length=512), > Field('Copyrightline',length=512), > Field('URL',length=512), > Field('Nutzungsbedingungen','text') > ) > > > db.define_table('Images', > Field('Bildunterschrift',length=1024), > Field('Image','upload',uploadfolder=os.path.join(request.folder, > 'uploads/')), > Field('thumb','upload',writable=False,readable=False,uploadfolder=os. > path.join(request.folder,'uploads/')), > Field('Quelle',db.Quelle, requires=IS_IN_DB(db,'Quelle.id', > 'Quelle.Name')), > Field('Submitted','datetime',default=datetime.datetime.now(),writable= > False,readable=False,requires=[IS_DATE()]), > Field('Verfallsdatum','datetime',writable=False,readable=False), > format = '%(Bildunterschrift)s' # <<< important > ) > > db.define_table('Regisseur', > Field('Name',unique=True), > Field('Image','reference Images', requires=IS_EMPTY_OR(IS_IN_DB(db, db > .Images.id,'Images.Bildunterschrift'), null=None)), > format = '%(Name)s' # <<< important > ) > db.Regisseur.Name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db, > 'Regisseur.Name')] > > db.define_table('Schauspieler', > Field('Name',unique=True), > Field('Image','reference Images', requires=IS_EMPTY_OR(IS_IN_DB(db, db > .Images.id,'Images.Bildunterschrift'), null=None)), > format = '%(Name)s' # <<< important > ) > db.Schauspieler.Name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db, > 'Schauspieler.Name')] > db.define_table('Tempmovie', > Field('Title',length=512), > Field('OriginalTitel',length=512), > Field('Category','list:reference Category'), > Field('Genre','list:reference Genre'), > Field('Regisseur',db.Regisseur), > Field('weitereRegisseure','list:reference Regisseur'), > Field('Hauptrollen','list:reference Schauspieler'), > Field('KinostartDE','date'), > Field('KinostartOriginal','date'), > Field('Ursprungsland','list:reference Land'), > Field('Filmlengthmin','integer'), > Field('Content','text'), > Field('Views','integer',default=0), > Field('Trailer','text'), > format = '%(Title)s' # <<< important > ) > > db.define_table('Movie', > Field('Title',length=512), > Field('ShortTitle',length=32), > Field('OriginalTitel',length=512), > Field('Category','list:reference Category'), > Field('Genre','list:reference Genre'), > Field('Regisseur',db.Regisseur), > Field('weitereRegisseure','list:reference Regisseur'), > Field('Hauptrollen','list:reference Schauspieler'), > Field('KinostartDE','date'), > Field('KinostartOriginal','date'), > Field('Ursprungsland','list:reference Land'), > Field('Filmlengthmin','integer'), > Field('Content','text'), > Field('Views','integer',default=0), > Field('NotComplete','boolean'), > Field('NumberofUserVotes','integer'), > Field('SumofUserVotes','integer'), > Field('Trailer','text'), > Field('PosterImagevertical','reference Images', requires=IS_EMPTY_OR( > IS_IN_DB(db, db.Images.id,'Images.Bildunterschrift'), null=None)), > Field('TitelImage169','reference Images', requires=IS_EMPTY_OR( > IS_IN_DB(db, db.Images.id,'Images.Bildunterschrift'), null=None)), > format = '%(ShortTitle)s' # <<< important > ) > db.Movie.Title.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'Movie.Title')] > db.Movie.ShortTitle.requires=[IS_NOT_EMPTY()] > db.Movie.OriginalTitel.requires=[IS_NOT_EMPTY()] > db.Movie.KinostartDE.requires=IS_EMPTY_OR(IS_DATE()) > db.Movie.KinostartOriginal.requires=requires=IS_EMPTY_OR(IS_DATE()) > db.Movie.Regisseur.requires=IS_IN_DB(db,'Regisseur.id','Regisseur.Name') > #db.Movie.weitereRegisseure.requires = > IS_EMPTY_OR(IS_IN_DB(db,'Regisseur.id','%(Name)s',multiple=True)) > #db.Movie.weitereRegisseure.widget = hmultiselect_widget > db.Movie.weitereRegisseure.widget = lambda field,value: SQLFORM.widgets. > multiple.widget(field,value,size=10) > #db.Movie.Hauptrollen.requires = > IS_EMPTY_OR(IS_IN_DB(db,'Schauspieler.id','%(Name)s',multiple=True)) > #db.Movie.Hauptrollen.widget = hmultiselect_widget > db.Movie.Hauptrollen.widget = lambda field,value: SQLFORM.widgets.multiple > .widget(field,value,size=10) > > > #db.Movie.Hauptrollen.requires=IS_EMPTY_OR(IS_IN_DB(db,'Schauspieler.id','Schauspieler.Name',multiple=True)) > #db.Movie.Hauptrollen.widget = hmultiselect_widget > db.Movie.Genre.requires=IS_IN_DB(db,'Genre.id','Genre.Name', multiple=(1, > 1000)) > > db.define_table("image_references", > Field("image_id", "reference Images",writable=False,readable=False), > Field("Movie", "reference Movie",requires=IS_EMPTY_OR(IS_IN_DB(db, > 'Movie.id','Movie.ShortTitle'))) > ) > > db.define_table('Newstype', > Field('Name', length=64), > format = '%(Name)s' # <<< important > ) > > db.define_table('Article', > Field('Title',length=512), > Field('Movie',db.Movie, requires=IS_IN_DB(db,'Movie.id','Movie.Title') > if not request.vars.News else None), > Field('Content','text'), > Field('News','boolean'), > Field('TypeofNews','reference Newstype', requires=IS_EMPTY_OR(IS_IN_DB > (db,'Newstype.id','Newstype.Name'))), > Field('Medienname',length=256), > Field('Sources',length=512), > Field('Sourceslinktext',length=256), > Field('Submitted','datetime',default=datetime.datetime.now()), > Field('Views','integer',default=0), > Field('Author','reference auth_user',default=auth.user_id), > Field('TopImage','reference Images', requires=IS_EMPTY_OR(IS_IN_DB(db, > db.Images.id ,'Images.Bildunterschrift'), null=None)), > Field('BottomlImage','reference Images', requires=IS_EMPTY_OR(IS_IN_DB > (db, db.Images.id,'Images.Bildunterschrift'), null=None)), > Field('BottomrImage','reference Images', requires=IS_EMPTY_OR(IS_IN_DB > (db, db.Images.id,'Images.Bildunterschrift'), null=None)), > Field('InTextImage','reference Images', requires=IS_EMPTY_OR(IS_IN_DB( > db, db.Images.id,'Images.Bildunterschrift'), null=None)), > Field("slug", compute=lambda row: IS_SLUG()(row.Title)[0]), > ) > db.Article.Title.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'Article.Title' > )] > db.Article.Content.requires=IS_NOT_EMPTY() > db.Article.Sources.requires=IS_NOT_EMPTY() > db.Article.Submitted.requires=[IS_DATE()] > > db.define_table('Review', > Field('Movie',db.Movie), > Field('Content','text'), > Field('Rating','double'), > Field('Submitted','datetime',default=datetime.datetime.now()), > Field('Views','integer',default=0), > Field('Author','reference auth_user',default=auth.user_id) > ) > db.Review.Movie.requires=IS_IN_DB(db,'Movie.id','Movie.Title') > db.Review.Content.requires=IS_NOT_EMPTY() > db.Review.Rating.requires=IS_NOT_EMPTY() > db.Review.Submitted.requires=[IS_DATE()] > > db.define_table('Manual', > Field('Title',length=64,requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db, > 'Manual.Title')]), > Field('Inhalt','text',requires=[IS_NOT_EMPTY()]), > Field('Submitted','datetime',default=datetime.datetime.now()), > Field('Author','reference auth_user',default=auth.user_id) > ) > > > def advanced_editor(field, value): > return TEXTAREA(_id = str(field).replace('.','_'), _name=field.name, > _class='text ckeditor', value=value, _cols=80, _rows=10) > > > > > > I removed a bunch of comments to make it more compact. (the key was > removed aswell) > thanks for your help > -- 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.