SQLite para PDA

Andrés Ignacio Martínez Soto andresignacio.martinez en alumail.uji.es
Lun Ene 22 12:46:53 CET 2007


Siento ser '¿aguafiestas?', pero ¿funciona el módulo MySQLdb en la PDA? .
Lo que puedes hacer, es utilizar SQLite en ambas partes, pero en el PC
hacerte un par de scripts para sincronizar SQLite con MySQL, ya sea a
través de SQLObject, de MySQLdb o de unas 'pipes' peladas...

Yo habiendo tenido que experimentar ese caso, exporté por medio de
MySQLDump, y PHPMyAdmin todos los datos de MySQL quitando los 'IF NOT
EXISTS' , los 'charsets' de las tablas de MySQL, y los tipos de motor a
utilizar con cada tabla. Para después guardarlo como un ficherito .sql ,
y haciendo que SQLite3 se lo 'coma' desde su propio CLI.

Con SQLite en el PDA puedes trabajar, pero no con MySQL, pero para
sincronizar las bases de datos SQLite3, puedes montarte un
cliente-servidor que te envíe el fichero de la bd por medio de Sockets,
y en el PC sincronizar ya con MySQL.

Los pasos para utilizar SQLite3 en la PDA son muy sencillos:

----------------------------------------------------------
#!/usr/bin/python
#-*-coding:utf-8 -*-

import pysqlite2.dbapi2 as sqlite

def conecta (filename=":memory:"):
    con = sqlite.connect(filename)
    cur = con.cursor()

    return con,cur

def consulta (cursor,conexion,query,numrows="all"):

            try:
                if numrows=="all":
                    query = cursor.execute (query)
                    result=cursor.fetchall()

                elif numrows=="one":
                    query = cursor.execute (query)
                    result=cursor.fetchone()

                else:
                    query = cursor.execute (query+" LIMIT "+str(numrows))
                    result=cursor.fetchall()

                query="COMMIT;"
                cursor.execute(query)

                return result

            except sqlite.DatabaseError:
                           cursor.execute ("ROLLBACK)


def CerrarConexion (con=None,cur=None):
    cur.close()
    con.close()


Saludos


En/na Mikel Larreategi ha escrit:
> Ekaitz Lizundia(e)k dio:
>   
>> Buenos dias a todos,
>>
>> tengo una aplicacion en el PDA desarrollado con python. Con el PC utilizo
>> MySQL para andar con tablas, pero en el PDA tengo que usar SQLite3 creo.
>>
>> Las tablas ya estarian creadas, y estarian en el PC. Con el PDA seria
>> conectar via wifi con el pc y acceder a esas tablas para modificar
>> valores.
>>
>> Para ello, ¿SQLite tengo que instalar en el PDA?
>> Con MySQL, suelo poner "import MySQLdb"
>> ¿Con SQLite en el PDA que habria que poner?
>>     
>
> En el Python 2.4.4 de mi ordenador:
>
> erral en lindari:~$ python
> Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02)
> [GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>   
>>>> import sqlite
>>>> dir(sqlite)
>>>>         
> ['BINARY', 'Binary', 'Connection', 'Cursor', 'DATE', 'DBAPITypeObject',
> 'DataError', 'DatabaseError', 'Error', 'INT', 'IntegrityError',
> 'InterfaceError', 'InternalError', 'NUMBER', 'NotSupportedError',
> 'OperationalError', 'PgResultSet', 'ProgrammingError', 'ROWID',
> 'STRING', 'TIME', 'TIMESTAMP', 'UNICODESTRING', 'Warning', '__all__',
> '__builtins__', '__doc__', '__file__', '__name__', '__path__',
> '__revision__', '_sqlite', 'apilevel', 'connect', 'decode', 'encode',
> 'main', 'paramstyle', 'threadsafety', 'version', 'version_info']
>   
>
> Pero si utilizas mysql en el PC, desde la PDA siempre te podrás conectar
> al MySQL del PC, no?
>
> Por ejemplo, asumiendo que la IP del PC es 192.168.110.111:
>
>   
>>>> import MySQLdb as db
>>>> ip = '192.168.110.111'
>>>> usuario = 'myuser'
>>>> password = 'mypass'
>>>> con = db.connect(ip, usuario, password)
>>>>         
>
>
>
> Mikel
>
>   




Más información sobre la lista de distribución Python-es