uhm. note that the uri is mysql://username:password@hostname/databasename it seems that you put a ; instead of a : between user and password.
On Friday, June 5, 2015 at 6:26:00 AM UTC+2, Jose Galvan wrote: > > > Hi all.. > > Iam starting to learn web2py. I have been playing with DAL and was able > to import a legacy MySQL DB tables. > I did it using the python's prompt and it was possible to do some queries > to the tables of the legacy DB...the results of these queries were > presented as python dictionary format, it was great !. > > To continue playing with my legacy DB I decide to create a new app > following the Web2py Browser interface so the first thing I did was to > update the line refered to the DAL conexion in models db.py. > > then when I run the app..appears the following error ticket.. any help > will be appreciated.. > > Error ticket for "Pedidos" Ticket ID > > 127.0.0.1.2015-06-03.17-26-28.b24801c4-a854-4de5-9d20-c360002ac66a > <type 'exceptions.RuntimeError'> Failure to connect, tried 5 times: > Traceback (most recent call last): File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\base.py", > line 437, in __init__ self._adapter = ADAPTERS[self._dbname](**kwargs) File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\adapters\base.py", > > line 57, in __call__ obj = super(AdapterMeta, cls).__call__(*args, > **kwargs) File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\adapters\mysql.py", > > line 132, in __init__ if do_connect: self.reconnect() File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\connection.py", > > line 105, in reconnect self.connection = f() File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\adapters\mysql.py", > > line 130, in connector return self.driver.connect(**driver_args) File > "d:\python27\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect > return Connection(*args, **kwargs) File > "d:\python27\lib\site-packages\MySQLdb\connections.py", line 187, in > __init__ super(Connection, self).__init__(*args, **kwargs2) > OperationalError: *(1045, "Access denied for user > 'root;malher'@'localhost' (using password: NO)") * Versión web2py™ Version > 2.11.2-stable+timestamp.2015.05.30.16.33.24 Rastreo > > 1. > 2. > 3. > 4. > 5. > 6. > 7. > 8. > 9. > 10. > 11. > 12. > 13. > 14. > 15. > 16. > 17. > 18. > 19. > 20. > 21. > 22. > 23. > 24. > 25. > 26. > 27. > 28. > > Traceback (most recent call last): > File "D:\Python27\Lib\site-packages\web2py\gluon\restricted.py", line 227, > in restricted > exec ccode in environment > File > "D:/Python27/Lib/site-packages/web2py/applications/Pedidos/models/db.py" > <http://127.0.0.1:8000/admin/default/edit/Pedidos/models/db.py>, line 21, in > <module> > db = DAL('mysql://root;malher@localhost/lafe') > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\base.py", line > 174, in __call__ > obj = super(MetaDAL, cls).__call__(*args, **kwargs) > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\base.py", line > 459, in __init__ > raise RuntimeError("Failure to connect, tried %d times:\n%s" % (attempts, > tb)) > RuntimeError: Failure to connect, tried 5 times: > Traceback (most recent call last): > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\base.py", line > 437, in __init__ > self._adapter = ADAPTERS[self._dbname](**kwargs) > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\adapters\base.py", > line 57, in __call__ > obj = super(AdapterMeta, cls).__call__(*args, **kwargs) > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\adapters\mysql.py", > line 132, in __init__ > if do_connect: self.reconnect() > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\connection.py", > line 105, in reconnect > self.connection = f() > File > "D:\Python27\Lib\site-packages\web2py\gluon\packages\dal\pydal\adapters\mysql.py", > line 130, in connector > return self.driver.connect(**driver_args) > File "d:\python27\lib\site-packages\MySQLdb\__init__.py", line 81, in > Connect > return Connection(*args, **kwargs) > File "d:\python27\lib\site-packages\MySQLdb\connections.py", line 187, in > __init__ > super(Connection, self).__init__(*args, **kwargs2) > OperationalError: (1045, "Access denied for user 'root;malher'@'localhost' > (using password: NO)") > > In file: > D:\Python27\Lib\site-packages\web2py\applications\Pedidos\models\db.py > > 1. > 2. > 3. > 4. > 5. > 6. > 7. > 8. > 9. > 10. > 11. > 12. > 13. > 14. > 15. > 16. > 17. > 18. > 19. > 20. > 21. > 22. > 23. > 24. > 25. > 26. > 27. > 28. > 29. > 30. > 31. > 32. > 33. > 34. > 35. > 36. > 37. > 38. > 39. > 40. > 41. > 42. > 43. > 44. > 45. > 46. > 47. > 48. > 49. > 50. > 51. > 52. > 53. > 54. > 55. > 56. > 57. > 58. > 59. > 60. > 61. > 62. > 63. > 64. > 65. > 66. > 67. > 68. > 69. > 70. > 71. > 72. > 73. > 74. > 75. > 76. > 77. > 78. > 79. > 80. > 81. > 82. > 83. > 84. > 85. > 86. > 87. > 88. > 89. > 90. > 91. > 92. > 93. > 94. > > # -*- 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() > > ## app configuration made easy. Look inside private/appconfig.ini > from gluon.contrib.appconfig import AppConfig > ## once in production, remove reload=True to gain full speed > myconf = AppConfig(reload=True) > > > if not request > <http://127.0.0.1:8000/examples/global/vars/request>.env.web2py_runtime_gae: > ## if NOT running on Google App Engine use SQLite or other DB > ## db = DAL(myconf.take('db.uri'), pool_size=myconf.take('db.pool_size', > cast=int), check_reserved=['all']) > db = DAL > <http://127.0.0.1:8000/examples/global/vars/DAL>('mysql://root;malher@localhost/lafe') > <- this is the line I used and commented the above one. > else: > ## connect to Google BigTable (optional 'google:datastore://namespace') > db = DAL > <http://127.0.0.1:8000/examples/global/vars/DAL>('google:datastore+ndb') > ## store sessions and tickets there > session > <http://127.0.0.1:8000/examples/global/vars/session>.connect(request > <http://127.0.0.1:8000/examples/global/vars/request>, response > <http://127.0.0.1:8000/examples/global/vars/response>, db=db) > ## or store session in Memcache, Redis, etc. > ## from gluon.contrib.memdb import MEMDB > ## from google.appengine.api.memcache import Client > ## session.connect(request, response, db = MEMDB(Client())) > > ## by default give a view/generic.extension to all actions from localhost > ## none otherwise. a pattern can be 'controller/function.extension' > response > <http://127.0.0.1:8000/examples/global/vars/response>.generic_patterns = > ['*'] if request > <http://127.0.0.1:8000/examples/global/vars/request>.is_local else [] > ## choose a style for forms > response <http://127.0.0.1:8000/examples/global/vars/response>.formstyle = > myconf.take('forms.formstyle') # or 'bootstrap3_stacked' or 'bootstrap2' or > other > response > <http://127.0.0.1:8000/examples/global/vars/response>.form_label_separator = > myconf.take('forms.separator') > > > ## (optional) optimize handling of static files > # response.optimize_css = 'concat,minify,inline' > # response.optimize_js = 'concat,minify,inline' > ## (optional) static assets folder versioning > # response.static_version = '0.0.0' > ######################################################################### > ## 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) > ######################################################################### > > from gluon.tools import Auth, Service, PluginManager > > auth = Auth(db) > service = Service() > plugins = PluginManager() > > ## create all tables needed by auth if not custom tables > ## auth.define_tables(username=True, signature=True) > auth.define_tables(username=False, signature=False) > ## configure email > mail = auth.settings.mailer > mail.settings.server = 'logging' if request > <http://127.0.0.1:8000/examples/global/vars/request>.is_local else > myconf.take('smtp.server') > mail.settings.sender = myconf.take('smtp.sender') > mail.settings.login = myconf.take('smtp.login') > > ## configure auth policy > auth.settings.registration_requires_verification = False > auth.settings.registration_requires_approval = False > auth.settings.reset_password_requires_verification = True > > ######################################################################### > ## Define your tables below (or better in another model file) for example > ## > ## >>> db.define_table('mytable',Field('myfield','string')) > ## > ## Fields can be 'string','text','password','integer','double','boolean' > ## 'date','time','datetime','blob','upload', 'reference TABLENAME' > ## There is an implicit 'id integer autoincrement' field > ## Consult manual for more options, validators, etc. > ## > ## More API examples for controllers: > ## > ## >>> db.mytable.insert(myfield='value') > ## >>> rows=db(db.mytable.myfield=='value').select(db.mytable.ALL) > ## >>> for row in rows: print row.id, row.myfield > ######################################################################### > > ## after defining tables, uncomment below to enable auditing > # auth.enable_record_versioning(db) > > -- 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.