SQLAlchemy连接数据库并在django admin显示
SQLAlchemy 0.7 postgersql 9.0
SQLAlchemy连接数据库有两种方法,一种是classic,一种是modern
1,modern方法
1 from sqlalchemy import create_engine 2 from sqlalchemy.ext.declarative import declarative_base 3 from sqlalchemy import Column, Integer, String 4 from sqlalchemy.orm import sessionmaker 5 from sqlalchemy import Sequence 6 7 #绑定数据库 8 engine = create_engine('postgres://postgres:1@localhost/fy', echo=False) 9 Base = declarative_base() 10 11 class User(Base): 12 __tablename__ = 'users' 13 id = Column(Integer, Sequence('user_id_seq'), primary_key=True) 14 name = Column(String) 15 fullname = Column(String) 16 password = Column(String) 17 18 def __init__(self, name, fullname, password): 19 self.name = name 20 self.fullname = fullname 21 self.password = password 22 23 def __repr__(self): 24 return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password) 25 26 27 Base.metadata.create_all(engine) 28 29 #session会话 30 Session = sessionmaker(bind=engine) 31 Session = sessionmaker() 32 Session.configure(bind=engine) 33 session = Session() 34 35 user_name = raw_input('name >') 36 user_fullname = raw_input('fullname >') 37 user_password = raw_input('password >') 38 39 ed_user = User(user_name, user_fullname, user_password) 40 session.add(ed_user) 41 42 #提交 43 session.commit() 44 session.close()
2. classic方法 也可以用session方法增加数据
1 from sqlalchemy import Table, MetaData, Column, Integer, String 2 from sqlalchemy.orm import mapper 3 from sqlalchemy import create_engine 4 from sqlalchemy.ext.declarative import declarative_base 5 from sqlalchemy import Column, Integer, String 6 from sqlalchemy.orm import sessionmaker 7 from sqlalchemy import Sequence 8 9 engine = create_engine('postgres://postgres:1@localhost/fy', echo=False) 10 metadata = MetaData() 11 12 user = Table('users', metadata, 13 Column('id', Integer, Sequence('user_id_seq'), primary_key=True), 14 Column('name', String(50)), 15 Column('fullname', String(50)), 16 Column('password', String(12)) 17 ) 18 19 metadata.create_all(engine, checkfirst=True) 20 conn = engine.connect() 21 22 class User(object): 23 def __init__(self, name, fullname, password): 24 self.name = name 25 self.fullname = fullname 26 self.password = password 27 28 mapper(User, user) 29 30 user_name = raw_input('name >') 31 user_fullname = raw_input('fullname >') 32 user_password = raw_input('password >') 33 34 ed_user = user.insert(values=dict(name=user_name,fullname=user_fullname,password=user_password)) 35 conn.execute(ed_user) 36 conn.close()
在django admin显示:
先创建一个app,然后按照django的教程弄出django管理(表名不是这个例子的)
只要SQLAlchemy创建的表和model.py的表名一样,就可以显示出来了。
model.py
1 from django.db import models 2 3 class User(models.Model): 4 id = models.AutoField(primary_key=True) 5 name = models.CharField(max_length=20) 6 fullname = models.CharField(max_length=20) 7 password = models.CharField(max_length=20) 8 9 def __unicode__(self): 10 return self.name
参考资料:
http://wangye.org/blog/archives/date/2012/10
http://www.cnblogs.com/fangyu19900812/admin/EditPosts.aspx?opt=1 (这个要慢慢找)
http://docs.sqlalchemy.org/en/rel_0_7/ 官方文档
http://www.blogjava.net/sean/archive/2009/01/26/252597.html