Уведомления

Группа в Telegram: @pythonsu

#1 Июль 17, 2011 22:12:33

jn5
От:
Зарегистрирован: 2011-07-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy

Здравстуйте!
я только начинаю изучать алхимию и вообще ОРМ. Я пытался вывести id пользователя ed, он мне выводит все кроме 1.Подскажите,пожалуйста, как это исправить. Вот код.

import sqlalchemy
from sqlalchemy import create_engine
engine = create_engine('sqlite:///helloworld.db', echo=True)
from sqlalchemy import Table, Column, Integer, String, MetaData
metadata = MetaData()
users_table = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('fullname', String),
Column('password', String)
)
metadata.create_all(engine)
class User(object):
def __init__(self, name, fullname, password):
self.name = name
self.fullname = fullname
self.password = password

def __repr__(self):
return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)
from sqlalchemy.orm import mapper
mapper(User, users_table)
ed_user = User('ed', 'Ed Jones', 'edspassword')

from sqlalchemy.orm import sessionmaker
Session = sessionmaker()
Session.configure(bind=engine)
session=Session()
new_user=User('N', 'Shantaev', 'parol')
session.add(new_user)
session.add(ed_user)
our_user=session.query(User).filter_by(name='ed').first()
session.add(our_user)
print ed_user is our_user
print ed_user.id



Офлайн

#2 Июль 19, 2011 10:47:11

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy

Не увидел у Вас ни одного коммита … Сюдя по всему именно по этому id и None, так как оно генериться SqlLite.

Вам нужно или написать session.commit(), а потом достать пользователя.
Либо написать что-то вроде:

ed_user = User('ed', 'Ed Jones', 'edspassword')
# код создания сессии
ed_user = session.merge(ed_user)



Офлайн

#3 Июль 22, 2011 13:57:17

jn5
От:
Зарегистрирован: 2011-07-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy

Sleepwalker
Не увидел у Вас ни одного коммита … Сюдя по всему именно по этому id и None, так как оно генериться SqlLite.

Вам нужно или написать session.commit(), а потом достать пользователя.
Либо написать что-то вроде:
ed_user = User('ed', 'Ed Jones', 'edspassword')
# код создания сессии
ed_user = session.merge(ed_user)
спасибо)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version