Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python

Rename field in Access DB

 

 

Python python RSS feed   Index | Next | Previous | View Threaded


iainking at gmail

May 14, 2008, 8:08 AM

Post #1 of 4 (924 views)
Permalink
Rename field in Access DB

I'm manipulating an MS Access db via ADODB with win32com.client. I
want to rename a field within a table, but I don't know how to. I
assume there is a line of SQL which will do it, but nothing I've tried
(from searching) has worked.
Basic code:

import win32com.client
connection = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=dbfile.mdb;'
connection.Open(DSN)
connection.Execute("ALTER TABLE tablename CHANGE from to") #this sql
doesn't work
connection.Close()

Anyone know how to get this to work?

Iain
--
http://mail.python.org/mailman/listinfo/python-list


deets at nospam

May 14, 2008, 8:09 AM

Post #2 of 4 (867 views)
Permalink
Re: Rename field in Access DB [In reply to]

Iain King wrote:

> I'm manipulating an MS Access db via ADODB with win32com.client. I
> want to rename a field within a table, but I don't know how to. I
> assume there is a line of SQL which will do it, but nothing I've tried
> (from searching) has worked.
> Basic code:
>
> import win32com.client
> connection = win32com.client.Dispatch(r'ADODB.Connection')
> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=dbfile.mdb;'
> connection.Open(DSN)
> connection.Execute("ALTER TABLE tablename CHANGE from to") #this sql
> doesn't work
> connection.Close()
>
> Anyone know how to get this to work?

I don't think Access supports SQL on the DDL-side. Try looking into the
Access COM-Api, maybe you can get a reference to the table and modify it.

Diez
--
http://mail.python.org/mailman/listinfo/python-list


mail at timgolden

May 14, 2008, 8:29 AM

Post #3 of 4 (862 views)
Permalink
Re: Rename field in Access DB [In reply to]

Iain King wrote:
> I'm manipulating an MS Access db via ADODB with win32com.client. I
> want to rename a field within a table, but I don't know how to. I
> assume there is a line of SQL which will do it, but nothing I've tried
> (from searching) has worked.
> Basic code:
>
> import win32com.client
> connection = win32com.client.Dispatch(r'ADODB.Connection')
> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=dbfile.mdb;'
> connection.Open(DSN)
> connection.Execute("ALTER TABLE tablename CHANGE from to") #this sql
> doesn't work
> connection.Close()

<code>
import os, sys
from win32com.client.gencache import EnsureDispatch as Dispatch

DATABASE_FILEPATH = r"c:\temp\test.mdb"
CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0; data Source=%s" % \
DATABASE_FILEPATH

if os.path.exists (DATABASE_FILEPATH):
os.remove (DATABASE_FILEPATH)

adox = Dispatch ("ADOX.Catalog")
adox.Create (CONNECTION_STRING)
adox = None

db = Dispatch ('ADODB.Connection')
db.Open (CONNECTION_STRING)
try:
db.Execute ('CREATE TABLE dtest (id INT, data INT)')
db.Execute ('INSERT INTO dtest (id, data) VALUES (1, 2)')

try:
db.Execute ('SELECT id, newdata FROM dtest')
except:
print "FAILED as expected"
else:
print "SUCCEEDED unexpectedly"

try:
db.Execute ('SELECT id, data FROM dtest')
except:
print "FAILED unexpectedly"
else:
print "SUCCEEDED as expected"

adox = Dispatch ("ADOX.Catalog")
adox.ActiveConnection = db
adox.Tables ("dtest").Columns ("data").Name = "newdata"
adox.Tables.Refresh ()
finally:
db.Close ()

db = Dispatch ('ADODB.Connection')
db.Open (CONNECTION_STRING)
try:

try:
db.Execute ('SELECT id, data FROM dtest')
except:
print "FAILED as expected"
else:
print "SUCCEEDED unexpectedly"

try:
db.Execute ('SELECT id, newdata FROM dtest')
except:
print "FAILED unexpectedly"
else:
print "SUCCEEDED as expected"

finally:
db.Close ()

</code>

TJG
--
http://mail.python.org/mailman/listinfo/python-list


iainking at gmail

May 15, 2008, 1:31 AM

Post #4 of 4 (859 views)
Permalink
Re: Rename field in Access DB [In reply to]

On May 14, 4:29 pm, Tim Golden <m...@timgolden.me.uk> wrote:
> Iain King wrote:
> > I'm manipulating an MS Access db via ADODB with win32com.client. I
> > want to rename a field within a table, but I don't know how to. I
> > assume there is a line of SQL which will do it, but nothing I've tried
> > (from searching) has worked.
> > Basic code:
>
> > import win32com.client
> > connection = win32com.client.Dispatch(r'ADODB.Connection')
> > DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=dbfile.mdb;'
> > connection.Open(DSN)
> > connection.Execute("ALTER TABLE tablename CHANGE from to") #this sql
> > doesn't work
> > connection.Close()
>
> <code>
> import os, sys
> from win32com.client.gencache import EnsureDispatch as Dispatch
>
> DATABASE_FILEPATH = r"c:\temp\test.mdb"
> CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0; data Source=%s" % \
> DATABASE_FILEPATH
>
> if os.path.exists (DATABASE_FILEPATH):
> os.remove (DATABASE_FILEPATH)
>
> adox = Dispatch ("ADOX.Catalog")
> adox.Create (CONNECTION_STRING)
> adox = None
>
> db = Dispatch ('ADODB.Connection')
> db.Open (CONNECTION_STRING)
> try:
> db.Execute ('CREATE TABLE dtest (id INT, data INT)')
> db.Execute ('INSERT INTO dtest (id, data) VALUES (1, 2)')
>
> try:
> db.Execute ('SELECT id, newdata FROM dtest')
> except:
> print "FAILED as expected"
> else:
> print "SUCCEEDED unexpectedly"
>
> try:
> db.Execute ('SELECT id, data FROM dtest')
> except:
> print "FAILED unexpectedly"
> else:
> print "SUCCEEDED as expected"
>
> adox = Dispatch ("ADOX.Catalog")
> adox.ActiveConnection = db
> adox.Tables ("dtest").Columns ("data").Name = "newdata"
> adox.Tables.Refresh ()
> finally:
> db.Close ()
>
> db = Dispatch ('ADODB.Connection')
> db.Open (CONNECTION_STRING)
> try:
>
> try:
> db.Execute ('SELECT id, data FROM dtest')
> except:
> print "FAILED as expected"
> else:
> print "SUCCEEDED unexpectedly"
>
> try:
> db.Execute ('SELECT id, newdata FROM dtest')
> except:
> print "FAILED unexpectedly"
> else:
> print "SUCCEEDED as expected"
>
> finally:
> db.Close ()
>
> </code>
>
> TJG


Excellent, many thanks.

Iain
--
http://mail.python.org/mailman/listinfo/python-list

Python python RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.