Пытаюсь написать второй вариант, декларативный.
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, create_engine
from sqlalchemy.orm import sessionmaker
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
def __repr__(self):
return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)
users_table = User.__table__
print(users_table)
metadata = Base.metadata
print(metadata)
engine = create_engine('sqlite:///file.db', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
vasiaUser = User('vasia', 'Vasiliy Pypkin', 'vasia2000')
romaUser = User('roman', 'Roman Romanov', 'roma3000')
session.add(vasiaUser)
session.add(romaUser)
session.commit()
ourUser = session.query(User).filter_by(name="roman").first()
C:\Python32\python.exe C:/Users/Егор/Desktop/prof_db/play.py
users
MetaData(bind=None)
2011-10-24 22:15:01,125 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2011-10-24 22:15:01,127 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name, fullname, password) VALUES (?, ?, ?)
2011-10-24 22:15:01,127 INFO sqlalchemy.engine.base.Engine ('vasia', 'Vasiliy Pypkin', 'vasia2000')
2011-10-24 22:15:01,127 INFO sqlalchemy.engine.base.Engine ROLLBACK
Traceback (most recent call last):
File "C:\Python32\lib\site-packages\sqlalchemy\engine\base.py", line 1633, in _execute_context
context)
File "C:\Python32\lib\site-packages\sqlalchemy\engine\default.py", line 332, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: users
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:/Users/Егор/Desktop/prof_db/play.py", line 35, in <module>
session.commit()
File "C:\Python32\lib\site-packages\sqlalchemy\orm\session.py", line 645, in commit
self.transaction.commit()
File "C:\Python32\lib\site-packages\sqlalchemy\orm\session.py", line 313, in commit
self._prepare_impl()
File "C:\Python32\lib\site-packages\sqlalchemy\orm\session.py", line 297, in _prepare_impl
self.session.flush()
File "C:\Python32\lib\site-packages\sqlalchemy\orm\session.py", line 1547, in flush
self._flush(objects)
File "C:\Python32\lib\site-packages\sqlalchemy\orm\session.py", line 1616, in _flush
flush_context.execute()
File "C:\Python32\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 328, in execute
rec.execute(self)
File "C:\Python32\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 472, in execute
uow
File "C:\Python32\lib\site-packages\sqlalchemy\orm\mapper.py", line 2220, in _save_obj
execute(statement, params)
File "C:\Python32\lib\site-packages\sqlalchemy\engine\base.py", line 1399, in execute
params)
File "C:\Python32\lib\site-packages\sqlalchemy\engine\base.py", line 1532, in _execute_clauseelement
compiled_sql, distilled_params
File "C:\Python32\lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_context
context)
File "C:\Python32\lib\site-packages\sqlalchemy\engine\base.py", line 1777, in _handle_dbapi_exception
from e
sqlalchemy.exc.OperationalError: (OperationalError) no such table: users 'INSERT INTO users (name, fullname, password) VALUES (?, ?, ?)' ('vasia', 'Vasiliy Pypkin', 'vasia2000')
Process finished with exit code 1