I got the code to run half way. I am saying, if we can bypass 
subprocess.Popen by:

cat_str = 'SELECT *From' + " " + table_name[0]

get_table = cursor.execute(cat_str)

sql_create_stmnt = cursor.fetchall()


I may not need to have mysqldump or anything. I just don't know what 
subprocess.Popen does that we can't do with cursor.



On Saturday, April 25, 2015 at 7:57:56 PM UTC-7, Richard wrote:
>
> I never try it... I may try it for you, but not now, I am working late 
> tonight to push a new app version in production :(
>
> From the script doc :
>
> This plugin needs:mysqlmysqldumpinstalled and globally available.Under 
> Windows you will probably need to add the mysql executable directory to the 
> PATH variable,you will also need to modify mysql to mysql.exe and 
> mysqldump to mysqldump.exe below.Just guessing here :)Access your tables 
> with:legacy_db(legacy_db.mytable.id>0).select()If the script crashes this 
> is might be due to that fact that the data_type_map dictionary below is 
> incomplete.Please complete it, improve it and continue.
>
>
> 1) Do you have mysqldump installed??  
> https://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
> 2) Is it globally available (You talk about some LAMP setup so I guess you 
> are under windows in a virtual LAMP stack?? if so, this has to be check)
> 3) Under windows? ... (same thing goes here...)
> 4) Are you able to create a dummy app define a connection string and 
> define one of your model (one table of your mysql db) and then do a simple 
> db().select(db.yourTableName.ALL)??
> 5) If the answer to 4 is yes I guess your are neer to make it works if the 
> precedent point are cover...
>
> Richard
>
>
>
>
>
> On Sat, Apr 25, 2015 at 10:41 PM, Ron Chatterjee <[email protected] 
> <javascript:>> wrote:
>
>> I very simple question. Have you tried? Does the script works for you? 
>> Because it didn't work for me. Idk what you don't understand that I am 
>> doing. Its all the same code. someone can just step through it and figure 
>> out that its failing on subprocess.Popen. Idk why its so hard to 
>> understand. Specially someone as good as you. And I mean it the good way:-).
>>
>>
>>
>> On Saturday, April 25, 2015 at 6:40:14 PM UTC-7, Richard wrote:
>>>
>>> I don't know what you are doing... As far as I can see the only thing 
>>> you have to do is to is that you call the script with as argument a valid 
>>> web2py db connection string...
>>>
>>> a database dump is what is say you dump your db into a file... But I 
>>> don't think this script work like that, I thought it could work over a 
>>> file, but it seems to work against a web2py live db connection string...
>>>
>>> Richard
>>>
>>> On Sat, Apr 25, 2015 at 2:21 AM, Ron Chatterjee <[email protected]> 
>>> wrote:
>>>
>>>> Thanks for all the help Richard. I tried to work around the code 
>>>> extract_mysql_models.py (attached is the code). Basically, I installed 
>>>> XAMP/WAMP and in the phpmyadmin I have the sql database. I am running this 
>>>> code but it fails in line #74:
>>>>
>>>>  p = subprocess.Popen(['mysqldump','--user=%s' % 
>>>> username,'--password=%s' % password,'--skip-add-drop-table','--no-data', 
>>>> database_name,table_name[0]], stdin=subprocess.PIPE, 
>>>> stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>>>
>>>> sql_create_stmnt, stderr = p.communicate()
>>>>
>>>>
>>>> I don't know what a mysql dump is. Wondering if the above two lines can 
>>>> be written like,
>>>>
>>>>
>>>> cat_str = 'SELECT *From' + " " + table_name[0]
>>>>
>>>> get_table = cursor.execute(cat_str)
>>>>
>>>> sql_create_stmnt = cursor.fetchall()
>>>>
>>>>
>>>> And then go on with if 'CREATE' in sql_create_stmnt:
>>>>
>>>>
>>>> Anyway, I am attaching the script if it make it makes it any clear.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wednesday, April 22, 2015 at 12:44:08 PM UTC-7, Richard wrote:
>>>>>
>>>>> The version in the thread seems not have been included in web2py...
>>>>>
>>>>> Try the one in gluon/scripts/
>>>>>
>>>>> Richard
>>>>>
>>>>> On Wed, Apr 22, 2015 at 3:41 PM, Richard Vézina <[email protected]
>>>>> > wrote:
>>>>>
>>>>>> This regex : regex = re.compile('(.*?):(.*?)@(.*)')
>>>>>>
>>>>>> Seems to parse the below command line call!!
>>>>>>
>>>>>> Richard
>>>>>>
>>>>>> On Wed, Apr 22, 2015 at 3:39 PM, Richard Vézina <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>> https://github.com/web2py/web2py/blob/master/scripts/extract_mysql_models.py
>>>>>>>
>>>>>>> Ok, it is not working exactly how I thought it was... Do you have 
>>>>>>> myslqldump install?
>>>>>>>
>>>>>>> Do you use Linux or Windows...
>>>>>>>
>>>>>>> what if you do
>>>>>>>
>>>>>>> python extract_mysql_models.py username:password@data_basename
>>>>>>>
>>>>>>> On Wed, Apr 22, 2015 at 3:28 PM, Ron Chatterjee <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> I used this version (the first one) and change to MySQLdb.
>>>>>>>>
>>>>>>>> https://groups.google.com/forum/#!searchin/web2py/extract_mysql_models.py/web2py/XPoTlzPG7lQ/ngSsMbd6zHAJ
>>>>>>>>
>>>>>>>> It gives me an error:
>>>>>>>>
>>>>>>>> Basically, 
>>>>>>>>
>>>>>>>> This worked
>>>>>>>>
>>>>>>>> db = MySQLdb.connect(host = 'localhost',user ='root',passwd = '',db 
>>>>>>>> = 'name_of_my_database')
>>>>>>>>
>>>>>>>> But this didn't.
>>>>>>>>
>>>>>>>> extract_mysql_models.py --user 'root' --password '' --host 
>>>>>>>> '127.0.0.1' --database 'name_of_my_database' --dalname 'wikidb' 
>>>>>>>> --colcomments --singlemigrate > mywiki.py
>>>>>>>>
>>>>>>>> Note, my password is empty.
>>>>>>>>
>>>>>>>> The error I get is simply that it can't connect to the server. So, 
>>>>>>>> I am going through the code now. 
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wednesday, April 22, 2015 at 2:49:41 PM UTC-4, Richard wrote:
>>>>>>>>>
>>>>>>>>> What do you exactly get out of extract_mysql_models.py applied 
>>>>>>>>> over an SQL dump of the schema (only no data inserts)?
>>>>>>>>>
>>>>>>>>> Richard
>>>>>>>>>
>>>>>>>>> On Wed, Apr 22, 2015 at 2:29 PM, Ron Chatterjee <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Sorry, wasn't clear. Basically want to create a DAL (db.py) file 
>>>>>>>>>> from an existing site that I locally hosted (wAMP) which is php 
>>>>>>>>>> front end 
>>>>>>>>>> mysql backend. I exported out of my WAMP (phpmysqladmin) the tables 
>>>>>>>>>> and 
>>>>>>>>>> fields in SQL language. Then I tried to make DAL out of it. As you 
>>>>>>>>>> explained, thats not possible, Now I will try to take a stab at 
>>>>>>>>>> working 
>>>>>>>>>> with extract_mysql_models.py but it will probably will require some 
>>>>>>>>>> updates. If nothing works, I can use the MYSQL workbench to connect 
>>>>>>>>>> to the 
>>>>>>>>>> server to draw me the schema and then write the DAL from that. Hope 
>>>>>>>>>> it 
>>>>>>>>>> clear things up now. My bad.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wednesday, April 22, 2015 at 2:04:49 PM UTC-4, Richard wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hello Ron,
>>>>>>>>>>>
>>>>>>>>>>> The more this thread goes the less I understand what you are 
>>>>>>>>>>> trying to acheive... Do you want to translate a SQLite DB into a 
>>>>>>>>>>> web2py 
>>>>>>>>>>> model? or MySQL DB? If you do have a MySQL server instance your 
>>>>>>>>>>> connection 
>>>>>>>>>>> string seems correct... But then you have to define the table you 
>>>>>>>>>>> want to 
>>>>>>>>>>> access in this table or you only have DB connection active which 
>>>>>>>>>>> give you 
>>>>>>>>>>> notting because the DAL don't know the DB structure...
>>>>>>>>>>>
>>>>>>>>>>> Richard
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 22, 2015 at 1:30 PM, Ron Chatterjee <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> This is what I was looking for. 
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> https://groups.google.com/forum/#!searchin/web2py/extract_mysql_models.py/web2py/XPoTlzPG7lQ/ngSsMbd6zHAJ
>>>>>>>>>>>>
>>>>>>>>>>>> But homehow the code didn't work for me even when I followed 
>>>>>>>>>>>> the example like it says. So, I am creating a stand alone version 
>>>>>>>>>>>> that 
>>>>>>>>>>>> works with MySQLdb.
>>>>>>>>>>>>
>>>>>>>>>>>>  
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Tuesday, April 21, 2015 at 4:58:52 PM UTC-4, Ron Chatterjee 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have sqlite browser. I am guessing its the same like SQlite 
>>>>>>>>>>>>> Manager where someone can import, export csv or sql file. I don't 
>>>>>>>>>>>>> have 
>>>>>>>>>>>>> password in that database and work externally to the python 
>>>>>>>>>>>>>
>>>>>>>>>>>>> *I guess one possibility will be:*
>>>>>>>>>>>>>
>>>>>>>>>>>>> import MySQLdb
>>>>>>>>>>>>>
>>>>>>>>>>>>> import sys
>>>>>>>>>>>>>
>>>>>>>>>>>>> try:
>>>>>>>>>>>>>
>>>>>>>>>>>>> db = MySQLdb.connect(host = 'localhost',user ='root',passwd = 
>>>>>>>>>>>>> ' ',db = 'my_dabasename')
>>>>>>>>>>>>>
>>>>>>>>>>>>> except Exception as e:
>>>>>>>>>>>>>
>>>>>>>>>>>>> sys.exit('we cant get into the db');
>>>>>>>>>>>>>
>>>>>>>>>>>>>  cursor = db.cursor()
>>>>>>>>>>>>>
>>>>>>>>>>>>> cursor.execute('SELECT *FROM table')
>>>>>>>>>>>>>
>>>>>>>>>>>>> results = cursor.fetchall()
>>>>>>>>>>>>>
>>>>>>>>>>>>> print results
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Once the table is fetched then use the insert_into_table 
>>>>>>>>>>>>> option to create db object.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> But I agree with Niphlod, import, export csv is probably the 
>>>>>>>>>>>>> only way to go around, if it works:-). And also agree with 
>>>>>>>>>>>>> richard. 
>>>>>>>>>>>>> sqlbroser does take the storage object as input and can export 
>>>>>>>>>>>>> csv table 
>>>>>>>>>>>>> and then use that back to create the database. I was just hoping 
>>>>>>>>>>>>> to 
>>>>>>>>>>>>> directly connect to my local server (WAMP) where I have the mysql 
>>>>>>>>>>>>> database 
>>>>>>>>>>>>> defined. I was under the impression,  db = DAL('mysql://
>>>>>>>>>>>>> [email protected]:8000/my_database_name',migrate_enabled=False, 
>>>>>>>>>>>>> pool_size=20) is the way to go about it.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tuesday, April 21, 2015 at 4:07:02 PM UTC-4, Richard wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> And what would be the utility since you already have INSERT 
>>>>>>>>>>>>>> INTO TABLE... Someone can just use something like SQLite Manager 
>>>>>>>>>>>>>> (
>>>>>>>>>>>>>> https://addons.mozilla.org/en-us/firefox/addon/sqlite-manager/) 
>>>>>>>>>>>>>> to import it... Once in SQLite DB (which anyway it should) he 
>>>>>>>>>>>>>> can use 
>>>>>>>>>>>>>> web2py csv export import if he want to migrate from SQLite to 
>>>>>>>>>>>>>> Postgres for 
>>>>>>>>>>>>>> instance...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Richard
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Apr 21, 2015 at 3:55 PM, Niphlod <[email protected]> 
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tuesday, April 21, 2015 at 9:39:14 PM UTC+2, Ron 
>>>>>>>>>>>>>>> Chatterjee wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I tried this:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> db = 
>>>>>>>>>>>>>>>> DAL('mysql://[email protected]:8000/my_database_name',migrate_enabled=False,
>>>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>>> pool_size=20)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It didn't work either. I guess someone needs to look at how 
>>>>>>>>>>>>>>>> to connect to legacy database. 
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> where is the password ?!
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> BTW: I think there's a bit of misunderstandings going on in 
>>>>>>>>>>>>>>> this thread. 
>>>>>>>>>>>>>>> There are two separate concept at play: schema (structure) 
>>>>>>>>>>>>>>> AND data.
>>>>>>>>>>>>>>> Every script/extract_***_models.py can "inspect" an existing 
>>>>>>>>>>>>>>> database and figure out (with limitations) the model you should 
>>>>>>>>>>>>>>> write to 
>>>>>>>>>>>>>>> access that database --> schema (or structure) translated to 
>>>>>>>>>>>>>>> nifty 
>>>>>>>>>>>>>>> "db.define_table(....)"
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Exporting and importing a csv (compatible with what web2py 
>>>>>>>>>>>>>>> generates) instead - again, with limitations - is the way to 
>>>>>>>>>>>>>>> transfer data 
>>>>>>>>>>>>>>> around.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If you have a long list of SQL statements in a file, those 
>>>>>>>>>>>>>>> are NOT going to work. 
>>>>>>>>>>>>>>> There's virtually nothing that reverse-engineers table 
>>>>>>>>>>>>>>> definitions such as "CREATE TABLE ....." to a model file, nor 
>>>>>>>>>>>>>>> something 
>>>>>>>>>>>>>>> that turns "INSERT INTO TABLE..." to a db.table.insert(), 
>>>>>>>>>>>>>>> although it can 
>>>>>>>>>>>>>>> be fun to create one (with lots of headaches).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  -- 
>>>>>>>>>>>>>>> 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 [email protected].
>>>>>>>>>>>>>>> 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 [email protected].
>>>>>>>>>>>> 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 [email protected].
>>>>>>>>>> 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 [email protected].
>>>>>>>> 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 [email protected].
>>>> 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 [email protected] <javascript:>.
>> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to