Jimmy
Jimmy

Reputation: 23

SQL Alchemy Building an ORM

I was reading this page

http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html

I'm trying to get a handle on how I can build a custom table that links to an object in python. I have this code

from sqlalchemy import create_engine, Column, Integer, String, DateTime, Float, UnicodeText, VARCHAR, NVARCHAR, TEXT, DATE, distinct, ForeignKey, Table
import sqlalchemy
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine("sqlite:///./P_case.db", 
                       echo=False)

Session = sessionmaker( bind=engine )
session = Session()

Base = declarative_base()

class Bus(Base):

    __tablename__ = "bus_vech"
    id = Column( Integer, primary_key = True )

    ## Bus
    number = Column( Integer)

When I run this, I get no errors, but from the way SQL alchmey has been described to me, it should create a database where the fields I have in my class Bus, will show up in a sequel database in the directory I run the script. I would like to see the database file I created and view it using an SQL viewer.

Upvotes: 1

Views: 108

Answers (1)

bud
bud

Reputation: 485

You need to enclose your class by two statements as shown below:

from sqlalchemy import create_engine, Column, Integer, String, DateTime, Float, UnicodeText, VARCHAR, NVARCHAR, TEXT, DATE, distinct, ForeignKey, Table
import sqlalchemy
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine("sqlite:///./P_case.db", 
                       echo=False)

Session = sessionmaker( bind=engine )
session = Session()

Base = declarative_base()
metadata = Base.metadata #########################
class Bus(Base):

    __tablename__ = "bus_info"
    id = Column( Integer, primary_key = True )

    ## Bus
    number = Column( Integer)

metadata.create_all( engine )    ######################

I put ######## after the statements you need. You should see this file in your directory, P_case.db.

Upvotes: 1

Related Questions