[python] access soubor - vytvoření relací

RMiklos na pss.sk RMiklos na pss.sk
Úterý Květen 5 18:29:28 CEST 2009


Ked su na to SQL-prikazy mohlo by to fungovat.
Mimochodom ked som zadal do Googlu 
http://www.google.sk/search?hl=sk&q=data+relation+ADO&meta=&aq=f&oq=
tak mi to vyhodilo same linky suvisiace s ADO.NET - napriklad tu 

http://www.c-sharpcorner.com/UploadFile/cvinodkumar/DataRelationVK11292005072318AM/DataRelationVK.aspx

Predpokladam, ze ADO na to nema metody, iba ADO.NET.

ADO.NET je odlisne od ADO. Napriklad namiesto objektu Recordset sa pouziva 
DataSet, ktory moze obsahovat viac tabuliek. 
Ale na vytvorenie relacie ma objekt typu DataSet metodu (ako vidiet na 
priklade v horeuvedenom linku: DataSet.Relations.Add() )

ADO.NET som skusal s IronPythonom ( http://www.codeplex.com/IronPython ). 
Ak by si to chcel skusit s IronPythonom, tak tu je maly zdrojak jak sa s 
tym robi, Zvysok odkukas zo zdrojakov C# alebo VB.NET
(Negarantujem ci zdrojak 100% funguje, lebo teraz IronPython nainstalovany 
nemam).


"""
Pouzitie ADO.NET pre pristup do AS/400
s vyuzitim DataSet a DataAdapter
"""
csebk ='nejaka_as400'
userid='nejake_id'
pwd   ='nejake_heslo'

### Pouzitie ADO.NET
import clr
import System
clr.AddReference("System.Data")
import System.Data

from System.Data.OleDb import OleDbConnection as dbconnection
from System.Data.OleDb import OleDbDataAdapter as dbdataadapter
from System.Data import DataSet as dataset

# Connection String
connectstr='PROVIDER=IBMDA400.DataSource.1;DATA SOURCE='+csebk+'; USER ID=
'+userid+'; PASSWORD='+pwd
#print connectstr

# Vytvorit spojenie
dbconn=dbconnection(connectstr)
dbconn.Open()

# Vytvorit SQL Statement
sqlStatement = "SELECT * FROM r000100T.r000270V"
#sqlStatement = "SELECT * FROM r000100T.p400100v"
# DataAdapter
da = dbdataadapter(sqlStatement, dbconn)

# Vytvorit DataSet
#ds = System.Data.DataSet("MyDataSet")
ds=dataset("MyDataSet")

# Naplnit Dataset
da.Fill(ds, "MyTable")

# Vylistovat tabulky v DataSete
for table in ds.Tables:
  print table

# Vylistovat vybrane polia vo vsetkych riadkoch 1.tabulky DataSetu
count=0
for row in ds.Tables[0].Rows:
  count +=1
  print "%10s %10s %10s %10s" % (row[0], row[1], row[2], row[3])

print "pocet viet v tabulke je: %d" % count

# Ukoncit spojenie
dbconn.Close()







From:
Ondrej Beranek <rainbof na gmail.com>
To:
Konference PyCZ <python na py.cz>
Date:
05.05.2009 17:58
Subject:
Re: [python] access soubor - vytvoření relací
Sent by:
python-bounces na py.cz



Uz to odkoukavam tady:

http://msdn.microsoft.com/en-us/library/bb243835.aspx

pokusim se to tam naprat jako sadu SQL prikazu.

2009/5/5 <RMiklos na pss.sk>
Jake relacie myslis?   
S Accessom nepracujem, ale ak to co chces ide vseobecne cez ADO, tak sa to 
da odkukat z nejakych prikladov napr. vo Visual Basicu a malo by to 
fungovat aj v Pythone podobnym sposobom. 




From: 
Ondrej Beranek <rainbof na gmail.com> 
To: 
Konference PyCZ <python na py.cz> 
Date: 
05.05.2009 17:03 
Subject: 
Re: [python] access soubor - vytvoření relací
Sent by: 
python-bounces na py.cz




Přes ADO to vypadá jednoduše. Nenašel jsem ale způsob jak to donutit 
tvořit relace mezi tabulkami.

2009/5/5 <RMiklos na pss.sk> 
Ja pouzivam ADO: 
Priklad spracovanie (update) *.dbf suboru: 

#
"""
Spracovanie DBF databazy pomocou ADO
"""
import string
# Pouzitie ADO
import win32com.client
conn=win32com.client.Dispatch('ADODB.Connection')
# Connection String
DSN='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Perl_Python\Database;
\
        Extended Properties=FoxPro 3.0;'
# print DSN
conn.Open(DSN)
rs = win32com.client.Dispatch('ADODB.Recordset')
rs_name = 'MyRecordset'
rs.CursorLocation = 3
rs.Open("SELECT * FROM rkun000", conn,1,3)

# Vypis tabulky a update
rs.MoveFirst()
count = 0
while 1: 
   if rs.EOF:
      break 
   else: 
      # pocet viet
      count = count + 1
      nazov  = rs.Fields.Item('NAZOV').Value
      rs.Fields.Item('NAZOV').Value = string.capwords(nazov)
      print rs.Fields.Item('NAZOV').Value
      # update aktualnu vetu
      rs.Update()
      # next record
      rs.MoveNext() 

print "Pocet spracovanych viet v databaze = %d" % count

# Ukoncit spojenie
conn.Close() 


Na Accsess musis zmenit iba connection string - pohladaj si ho (mozno tu): 

http://www.connectionstrings.com/ 
http://www.carlprothman.net/Default.aspx?tabid=81 



From: 
Ondrej Beranek <rainbof na gmail.com> 
To: 
Konference PyCZ <python na py.cz> 
Date: 
04.05.2009 17:46 
Subject: 
[python] access soubor - vytvoření relací 
Sent by: 
python-bounces na py.cz





Ahoj, 

potřeboval bych nějak z python skriptu stvořit access databázi (mdb 
soubor) a aby toho nebylo dost potřeboval bych v ní ještě vytvořit relace. 
Je soubor datové výměny která probíhá denně. Ty relace stačí vyrobit až po 
vytvořeníé tabulek.
Přítomnost accessu neni problem. 

Díky za všechny typy._______________________________________________ 

Python mailing list
Python na py.cz 
http://www.py.cz/mailman/listinfo/python 


_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python 
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python 


_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20090505/1dbd9a7c/attachment.htm>


Další informace o konferenci Python