Discussione:
Importare tabelle da access
(troppo vecchio per rispondere)
luca72
2006-06-05 09:09:29 UTC
Permalink
Buongiorno avrei bisogno di una info.
Ho un programmino stupido non mio fatto in access, vorrei "Tentare" di
rifarlo in python esiste un modo di importare le tabelle dal file mdb
di access?
Saluti e grazie

Luca
jamba
2006-06-06 12:00:46 UTC
Permalink
Post by luca72
Buongiorno avrei bisogno di una info.
Ho un programmino stupido non mio fatto in access, vorrei "Tentare" di
rifarlo in python esiste un modo di importare le tabelle dal file mdb
di access?
non so se esite un modo. però potresti convertire il file di access in
un altro db tipo sqlite postgresql mysql ecc...
Lawrence Oluyede
2006-06-06 12:09:46 UTC
Permalink
non so se esite un modo. però potresti convertire il file di access in un
altro db tipo sqlite postgresql mysql ecc...
Volendo puoi accedere da Python al file .mdb con ADOdb
http://phplens.com/lens/adodb/adodb-py-docs.htm
--
Lawrence - http://www.oluyede.org/blog
"Nothing is more dangerous than an idea
if it's the only one you have" - E. A. Chartier
Michele Petrazzo
2006-06-06 13:10:22 UTC
Permalink
Post by Lawrence Oluyede
non so se esite un modo. però potresti convertire il file di access in un
altro db tipo sqlite postgresql mysql ecc...
Volendo puoi accedere da Python al file .mdb con ADOdb
http://phplens.com/lens/adodb/adodb-py-docs.htm
oppure tramite odbc

http://www.google.com/search?q=python+odbc

Michele
ZeD
2006-06-06 13:44:35 UTC
Permalink
esiste un modo di importare le tabelle dal file mdb di access?
mdbtools?

oppure potresti provare a importarlo con kexi (http://www.kexi-project.org/)
e ad esportarlo in qualunque altro formato...
--
Under construction
luca72
2006-06-06 14:29:37 UTC
Permalink
Grazie x le risposte

Ieri avevo iniziato a trasformare le tabelle di access in file excel,
dopodichè le caricavo in una griglia e mi creavo il db con pysqlite.

Adesso seguo una delle vs strade

Ciao.
luca72
2006-06-06 15:43:47 UTC
Permalink
Post by ZeD
esiste un modo di importare le tabelle dal file mdb di access?
mdbtools?
oppure potresti provare a importarlo con kexi (http://www.kexi-project.org/)
e ad esportarlo in qualunque altro formato...
--
Under construction
Azzo ho visto che la versione win è a pagamento la bellazza di 99€
adesso scarico quella linux e vedo che casino faccio

Ciao
ZeD
2006-06-06 20:35:21 UTC
Permalink
Post by ZeD
oppure potresti provare a importarlo con kexi
(http://www.kexi-project.org/) e ad esportarlo in qualunque altro
formato...
Azzo ho visto che la versione win è a pagamento la bellazza di 99?
potresti compilartelo da te :)

(tra l'altro, stavo pensando, ma se io lo compro a 99?, poi pero' posso
distribuire gratuitamente i binari a chi mi pare? dopotutto e' gpl... se e'
cosi', non dovrebbe essere impossibile trovare altri "vendor" di Kexi per
windows...)

...e comunque ricordavo che non so quale distribuzione linux (ubuntu?
mandriva? knoppix?) includeva sw per windows, incluso kexi
--
Under construction
luca72
2006-06-07 09:30:24 UTC
Permalink
Ciao a tutti ho fatto cosi da pc windows:
import adodb
conn = adodb.NewADOConnection('access')
dsn = "Driver={Microsoft Access Driver
(*.mdb)};Dbq=c:\\nadia\\stat_ordinato.mdb;"
conn.Connect(dsn)
curs = conn.Execute('select * from tstoc')
col = 0
rig = 0
for row in curs:
lunghezza = len(row)
for indice in range(lunghezza):
rowi = row[indice]
rowi = str(rowi)
self.grid1.SetCellValue(rig,col,rowi)
col = col + 1
if indice == (lunghezza - 1):
rig = rig + 1
col = 0

Volendo usare adesso tutto su linux è logico fare un db usando
pysqlite o no?

Grazie Luca
Alessandro
2006-06-07 10:10:04 UTC
Permalink
-------- Original Message --------
Post by luca72
Volendo usare adesso tutto su linux è logico fare un db usando
pysqlite o no?
Direi!
Così diventa anche multipiattaforma, mentre quello che hai scritto non
credo ("Driver={Microsoft Access Driver")


Ciao
Alessandro
luca72
2006-06-07 12:58:06 UTC
Permalink
Post by Alessandro
-------- Original Message --------
Post by luca72
Volendo usare adesso tutto su linux è logico fare un db usando
pysqlite o no?
Direi!
Così diventa anche multipiattaforma, mentre quello che hai scritto non
credo ("Driver={Microsoft Access Driver")
Ciao
Alessandro
Grazie Alessandro, purtroppo le tabelle erano su access e le ho dovute
importare.

Ciao Luca
Alessandro
2006-06-07 13:20:08 UTC
Permalink
Post by luca72
Grazie Alessandro, purtroppo le tabelle erano su access e le ho dovute
importare.
Lo script che hai scritto legge dal db access e scrive a video. Ovvio
che funziona solo sotto windows, affermazione scontata la mia

Ciao
Alessandro
luca72
2006-06-07 15:10:38 UTC
Permalink
mi spiegate xchè ho questo errore:
Ho una tabella con 129 colonne il nome delle colonne lo vorrei prendere
da un foglio excel:
Faccio questa operazione:
for col in range(1,130):
luca = xlSht.Cells(1,col).Value
nomecolonne = nomecolonne + luca + ', '
così alla fine nomecolonne = a, b, c,...............

ora volevo creare la tabella così:
cur.execute('create table tstoc(' + nomecolonne + ')')

xò ottengo questo errore:
pysqlite2.dbapi2.OperationalError : near ")": sintax error

mentre se provo nomecolonne = ('a, b, c, ....')
cur.execute('create table tstoc(' + nomecolonne + ')')
tutto funziona.

Dove sbaglio

Saluti Luca
luca72
2006-06-07 15:38:31 UTC
Permalink
Post by luca72
Ho una tabella con 129 colonne il nome delle colonne lo vorrei prendere
luca = xlSht.Cells(1,col).Value
nomecolonne = nomecolonne + luca + ', '
così alla fine nomecolonne = a, b, c,...............
cur.execute('create table tstoc(' + nomecolonne + ')')
pysqlite2.dbapi2.OperationalError : near ")": sintax error
mentre se provo nomecolonne = ('a, b, c, ....')
cur.execute('create table tstoc(' + nomecolonne + ')')
tutto funziona.
Mi rispondo da solo
Post by luca72
luca = xlSht.Cells(1,col).Value
nomecolonne = nomecolonne + luca + ', '
l'ultimo carattere è una , (virgola) ed ecco xchè mi salta fuori l'errore
Riciao Luca
luca72
2006-06-08 15:50:56 UTC
Permalink
Risalve ho un problema di import:

Importo da access con il solito modo:
# importo direttamanete la tabella rigoc da access
conn = adodb.NewADOConnection('access')
dsn = "Driver={Microsoft Access Driver
(*.mdb)};Dbq=c:\\nadia\\stat_ordinato.mdb;"
conn.Connect(dsn)
curs = conn.Execute('select * from rigoc')
col = 0
rig = 0
for row in curs:
lunghezza = len(row)
for indice in range(lunghezza):
rowi = row[indice]
self.grid1.SetCellValue(rig,col,rowi)
col = col + 1
if indice == (lunghezza - 1):
rig = rig + 1
col = 0

Mi capita che l'import mi importi le rige ma non in modo ordinato come
nella tabella di access xchè? la tabella e molto lunga cirga
70000x129 non penso che questo sia un problema xò me lo fa solo con
questa tabella.
Ho notato anche che se esporto la tabella in excel tramite access anche
quì capita la stessa cosa il foglio excel non ha + le righe ordinate.

Saluti Luca
hk3project
2006-06-08 16:09:26 UTC
Permalink
Post by luca72
Mi capita che l'import mi importi le rige ma non in modo ordinato come
nella tabella di access xchè?
non credo che nel database esista il concetto di "ordinato"
specifica l'ordinamento che desideri nella query
luca72
2006-06-08 16:30:20 UTC
Permalink
Post by hk3project
Post by luca72
Mi capita che l'import mi importi le rige ma non in modo ordinato come
nella tabella di access xchè?
non credo che nel database esista il concetto di "ordinato"
specifica l'ordinamento che desideri nella query
Hai ragione sono proprio pirla

Ciao Luca

Continua a leggere su narkive:
Loading...