SQLAlchemy连接数据库并在django admin显示

时间:2023-03-09 01:12:28
SQLAlchemy连接数据库并在django admin显示

SQLAlchemy 0.7     postgersql  9.0

SQLAlchemy连接数据库有两种方法,一种是classic,一种是modern

1,modern方法

 from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Sequence #绑定数据库
engine = create_engine('postgres://postgres:1@localhost/fy', echo=False)
Base = declarative_base() class User(Base):
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), 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) Base.metadata.create_all(engine) #session会话
Session = sessionmaker(bind=engine)
Session = sessionmaker()
Session.configure(bind=engine)
session = Session() user_name = raw_input('name >')
user_fullname = raw_input('fullname >')
user_password = raw_input('password >') ed_user = User(user_name, user_fullname, user_password)
session.add(ed_user) #提交
session.commit()
session.close()

2. classic方法 也可以用session方法增加数据

 from sqlalchemy import Table, MetaData, Column, Integer, String
from sqlalchemy.orm import mapper
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Sequence engine = create_engine('postgres://postgres:1@localhost/fy', echo=False)
metadata = MetaData() user = Table('users', metadata,
Column('id', Integer, Sequence('user_id_seq'), primary_key=True),
Column('name', String(50)),
Column('fullname', String(50)),
Column('password', String(12))
) metadata.create_all(engine, checkfirst=True)
conn = engine.connect() class User(object):
def __init__(self, name, fullname, password):
self.name = name
self.fullname = fullname
self.password = password mapper(User, user) user_name = raw_input('name >')
user_fullname = raw_input('fullname >')
user_password = raw_input('password >') ed_user = user.insert(values=dict(name=user_name,fullname=user_fullname,password=user_password))
conn.execute(ed_user)
conn.close()

在django admin显示:

先创建一个app,然后按照django的教程弄出django管理(表名不是这个例子的)

SQLAlchemy连接数据库并在django admin显示

只要SQLAlchemy创建的表和model.py的表名一样,就可以显示出来了。

model.py

 from django.db import models

 class User(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20)
fullname = models.CharField(max_length=20)
password = models.CharField(max_length=20) def __unicode__(self):
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