SQLAlchemy on the way

14214 단어 sql
SQLAlchemy Trial
This is a great ORM ( Object-Relational Mapper ) which is compatible with  xxxx and many others.
 
SQLAlchemy 0.8 Documentation
link: http://docs.sqlalchemy.org/en/rel_0_8/orm/examples.html
        
IMPORTANT TO GO THROUGH
Object Relational Tutorial
http://docs.sqlalchemy.org/en/rel_0_8/
  
 
 
볼 것:
python - __str__ 와repr__ 의 차이!!
원본 주소:http://blog.csdn.net/yyt8yyt8/article/details/7030416
내장 함수 str () 와 repr () (representation, 표현, 표시) 또는 반 따옴표 연산 자 (`) 는 대상 의 내용, 유형, 수치 속성 등 정 보 를 문자열 로 편리 하 게 얻 을 수 있 습 니 다.str () 함수 에서 얻 은 문자열 은 가 독성 이 좋 고 (그러므로 print 에서 호출 됨) repr () 함수 에서 얻 은 문자열 은 이 대상 을 다시 얻 는 데 사 용 됩 니 다. 일반적인 상황 에서 obj = = eval (repr (obj) 이라는 등식 은 성립 됩 니 다.이 두 함 수 는 하나의 대상 을 매개 변수 로 받 아들 여 적당 한 문자열 을 되 돌려 줍 니 다.
사실 repr () 와 '같은 일 을 하고 대상 의' 공식 '문자열 로 되 돌아 갑 니 다.그 결 과 는 절대 다수의 경우 (모든 것 이 아니 라) 값 을 구 하 는 연산 (내장 함수 eval () 을 통 해 이 대상 을 다시 얻 을 수 있다.
str () 는 다 릅 니 다. 대상 의 가 독성 이 좋 은 문자열 을 생 성 합 니 다. 결 과 는 eval () 로 값 을 구 할 수 없 지만 print 출력 에 적합 합 니 다.
다음 예:
>>> class D(object):
...     def __str__(self):
...         return "a __str__"
...     def __repr__(self):
...         return "a __repr__"
...
>>> dr = D()
>>> print dr
a __str__
>>> dr
a __repr__
>>> "%s" % dr
'a __str__'
>>> "%r" % dr
'a __repr__'
>>> dr
a __repr__
>>>print dr
'a __str__'

 
왜 repr () 가 있 으 면 '? 
 Python 에서 어떤 조작 부호 와 함 수 는 같은 일 을 합 니 다. 왜냐하면 어떤 경우 에는 함수 가 조작 부호 보다 더 적합 하기 때 문 입 니 다. 예 를 들 어 함수 대상 이 매개 변수 로 전달 할 수 있 기 때 문 입 니 다.쌍성 호 (*) 곱셈 연산 과 pow () 내 건 함 수 는 모두 x 의 y 차방 으로 돌아간다.
기타 전용 클래스 의 방법: python_전용 클래스 방법 
링크 주소:http://www.cnblogs.com/xupeizhi/archive/2012/07/20/2601598.html
 
 기본 코드 는 이 럴 수 있어 요.
# create SQL engine
from sqlalchemy import create_engine

# To maintain a catalog of classes and tables relative to that base
from sqlalchemy.ext.declarative import declarative_base

# To accomplish the class mapped to the table with objects that present \
# the components of our table
from sqlalchemy import Column, Integer, String


# To start a session to talk to SQL database
from sqlalchemy.orm import sessionmaker

# [Create Engine]
engine = create_engine('sqlite:///:memory:', echo = True)

# An instance to set rules :)
Base = declarative_base()

class  User(Base):
    __tablename__='users'

    id = Column(Integer, primary_key= True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)

    def __init__(self, name, fullname, password):
        self.name = name
        self.fullname = fullname
        self.password = password

    # Optional: This is used for to check out elments visually
    def __repr__(self):
        return "<User('%s', '%s', '%s')>" % (self.name, self.fullname, self.password)

# start a session class instance
Session = sessionmaker()

# Bind engine to a session
Session.configure(bind=engine)  # once engine is available

# instantiate a session
session = Session()

# The above Session is associated with our SQLite-enabled Engine,\
# but it hasn’t opened any connections yet. \
# When it’s first used, it retrieves a connection \
# from a pool of connections maintained by the Engine, 
# and holds onto it until we commit all changes and/or close the session object.

 
그리고 힌트 에 따라 계속 하 세 요.session 의 내용, session filter
 중요 한 내용:
http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html#adding-new-objects
 
 
session 에서 재 미 있 습 니 다. 데 이 터 를 꺼 낼 때.예 를 들 면
thief = session.query(User).filter_by(name="wendy").first()
 이때 thief. name = "jake" 를 수정 합 니 다.
그리고 session. comit ()
데이터베이스 에 데이터 가 바 뀌 었 음 을 발견 할 수 있 습 니 다.웬 디 가 제 이 크 가 됐어 요.
×××같은 번호 로 직접 값 을 부여 하 는 것 은 별명 에 해당 하 며, 모두 같은 대상 에서 조작 하 는 것 이다.
만약 우리 가 데이터 의 사본 을 얻 고 싶 을 뿐, 원래 의 데 이 터 를 조작 하 는 것 이 아니라면.
직접 조작 하 는 것 은 모두 class 대상 이기 때문에 배열, 원 그룹 처럼 slice 절편 a = b [:] 를 새로 만 들 수 없습니다. 이렇게 하면 이러한 대상 복사 에서 안 됩 니 다.여 기 는 copy 모듈 을 사용 할 수 있 습 니 다.
    import copy
copy 모듈 은 1 얕 은 복사 (기본 복사) 2 깊 은 복사 로 나 뉜 다.
1. 얕 은 복사 본 은 조개 류 만 복사 하고 대상 의 부 류 는 복사 하지 않 는 다.
2. 복사 대상 의 하위 클래스 와 부모 클래스 를 심 복사
이렇게 대상 을 복사 하여 조작 한 후에 도 session. comit () 후에 데이터 에 오류 처 리 를 하지 않 습 니 다.데 이 터 를 수정 하고 일부 데이터 만 추출 하 는 작업 을 편리 하 게 하기 위해 서다.
자세 한 상황 은 보십시오http://www.jb51.net/article/15714.htm Python
복사 대상 (딥 복사 deepcopy 와 얕 은 복사 copy)
 
session 에 대해 서 는 session. dirty 의 용법 도 있 습 니 다.
We can add more User objects at once using add_all() :
>>> session.add_all([
...     User('wendy', 'Wendy Williams', 'foobar'),
...     User('mary', 'Mary Contrary', 'xxg527'),
...     User('fred', 'Fred Flinstone', 'blah')])

Also, Ed has already decided his password isn’t too secure, so lets change it:
>>> ed_user.password = 'f8s7ccs'

The Session is paying attention. It knows, for example, that Ed Jones has been modified:
>>> session.dirty
IdentitySet([<User('ed','Ed Jones', 'f8s7ccs')>])

and that three new User objects are pending:
>>> session.new  
IdentitySet([<User('wendy','Wendy Williams', 'foobar')>,
<User('mary','Mary Contrary', 'xxg527')>,
<User('fred','Fred Flinstone', 'blah')>])

We tell the Session that we’d like to issue all remaining changes to the database and commit the transaction, which has been in progress throughout. We do this via commit() :
sql>>> session.commit()

 
 

좋은 웹페이지 즐겨찾기