Ivan Evstegneev <bravo....@gmail.com> wrote:
> Hi Michael > > Thanks for the reply. > Since the moment I wrote this mail, I got some more insight on how things > work in DBs. > Just kept to harvest some info from the NET. > > Though thanks you for answers. > > >>>heh…why aren’t you asking on *their* list then ? :) > > Already did ^_^ even prior to writing here. But, as it seems, they are just > "one man army", I got a response from a developer, he asked me what my > project is about and then dissipated ))))) actually they are a two-man army. Here at SQLAlchemy Inc. we try to always have a satisfied customer! (if at all possible). > Again, thank you. > > > Ivan. > > > > > On Friday, March 20, 2015 at 1:30:19 AM UTC+2, Michael Bayer wrote: > > > Ivan Evstegneev <brav...@gmail.com> wrote: > > > Hello, > > > > > > First of all I'm new to DBs so please don't hang me on a tree ))) > > > > > > I have basic and simple questions(at least it simple for me ^_^ ). > > > > While googling and reading some tutorials about ORM DBs at whole, I still > > cannot build up a logical picture of how it works. > > > I think you might like some of the videos I have up at > http://www.sqlalchemy.org/library.html#talks. The “Session in Depth” gets > pretty step-by-step about the internals. > > > > Here is the brief example (I will use pony orm syntax cause it is readable > > and simple )))) ) > > heh…why aren’t you asking on *their* list then ? :) > > > > > > > Lets begin. > > > > First of all we need ti initialize a DB, like this: > > > > >>> db = Database('sqlite', '/path/to/the/test_db.sqlite', create_db=True) > > > > This command says that we've created a DB file named "test_db.sqlite" and > > it based on sqlite. > > > > Then, let's say I'll create two classes(connected via cars attribute): > > > > >>>class Person (db.Entity): > > name = Required(str) > > age = Required(int) > > cars = Set("Car") > > ... > > > > >>>class Car(db.Entity): > > make = Required(str) > > model = Required(str) > > owner = Required(Person) > > ... > > > > Finally I make a mapping between these classses and "test_db.sqlite" > > > > >>>db.generate_mapping(create_tables=True) > > > > > > So, at this moment I have some classes stored in the memory (cause I worked > > in python interactive shell) and physical "test_db.sqlite" placed on my > > hard drive. > > This file is actually contains an empty tables, am I right? > > um…well if create_tables is like create_all(), then yes. go to a shell and > type “sqlite3 <name_of_yourfile>”, you can query it directly. > > > Because I didn't initialized any entities yet. > > I can keep working via interactive console in order to accomplish this task > > and then just write "commit()" command in order to update "test_db.sqlite" > > file. > > > > Till this point everything looks fine.(I hope) > > > > The question arises when I ask my self how all this stuff should work with > > my code? > > > > I mean that I need to write some functions that will update my_db data. > > > > Suppose I have "my_main_routine.py" which, among the other things, imports > > some data from xls files. But how do I actually put these xls values in my > > data base? > > > > Should it look like that: > > > > my_main_routine.py > > my_db_classes.py ---- which will consist of all the classes I've created > > before.(i.e. Person and Car) > > "test_db.sqlite" ---- supose I've already mapped my classes to this file. > > if you’re writing a script to read an .xls file, I wouldn’t overthink it to > start. If you’re going to use multiple files, I’d advise using a traditional > “package” setup, e.g. with an __init__.py and all that. But an .xls reader > just to prototype probably can be in one file to start. > > > How do I handle all my these db-classes inside of main_routine? > > > > Does it look like that(generally): > > > > # my_main_routine.py > > > > import my_db_classes > > > > # db binding commands: > > db.bind('sqlite', '/path/to/the/test_db.sqlite', create_db=True) > > > > ......... my_code_ for_importing_xls_values....... > > ..........my_code_ for_importing_xls_values....... > > ..........my_code_ for_importing_xls_values....... > > ..........my_code_ for_importing_xls_values....... > > > > # now I need to pass these xls values to my db > > # so should it be written like that? --> > > > > p1 = Person(name = 'John', age = 20) > > p2 = Person(name = 'Mary' , age = 23) > > c1 = Car(make='Toyota', model = 'Prius', owner=p2) > > c2 = Car(make='Ford', model='Exploler', owner=p1) > > that’s an easy way to do it, sure. There’s ways that people might want to > automate how the names get matched up but I think if you’re starting out, I > think on a name-by-name basis works, you’d have a loop that iterates through > rows in the XLS, and for each row it makes a bunch of objects. > > > #and then just > > > > commit() > > > > #is that all? I just work directly with classes (in SQLAlchemy for > > particularly) or I need some decorators/ other stuff? > > that is all, if you put things in the session with session.add() first, then > you just commit and it flushes them. > > > EOF > > > > > > > > Furthermore, as I can barely understand, in order to work with db inside > > my_routine file I need (preferably) create a separate files i.e.: > > > > my_db_classes.py > > my_db_initial_mapper.py > > # in this file my db_mapping functions should be placed > > # as a result the "my_db.sqlite" will be created. > > > > and then my main code should look like this: > > > > # my_main_routine.py > > import my_db_classes > > import my_db_initial_mapper > > > > #binding functions may be placed in main_routine file(right?) > > > > ...... binding code.......... > > > > ......some xls related code......... > > > > ......entities assignment code..... > > > > commit() > > > > EOF > > > > Is this right? > > that could work sure. > > > > > > > > I think my problem appeared because of a lot of examples about databases > > are using interactive prompt so, it's kinda tricky to combine all of it > > when talking about python modules. > > You might want to poke around for example applications. I think most of them > are going to be web apps though which is likely more than you need here. > > > > Hope my question is clear enough, in case it doesn't I'll may best to write > > it more clearly next time )))) > > > > Any help will be highly appreciated. > > > > > > Ivan. > > > > P.S. What about raw SQL code? Should I write it directly in > > my_main_routine.py or there some special ways of implementation? > > for putting .xls rows into a database with the ORM you wouldn’t need much > raw SQL. If you did, then yes you’d just have the strings for that SQL in > the file. > > where you’re at, just do what works, and then when you have that, you can > iterate on it to make it better. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "sqlalchemy" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to sqlalchemy+...@googlegroups.com. > > To post to this group, send email to sqlal...@googlegroups.com. > > Visit this group at http://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.