zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    纯CSS打造可折叠树状菜单
    c++ Constructor FAQ 继续
    Java设计模式偷跑系列(六)Singleton模式的建模与实现
    优秀的产品经理是怎样炼成的?
    Pki原则
    屌丝男初中丰富的工作实践反击
    Android Material Design带UI变化
    unity多边形uv地图
    BZOJ 1208 HNOI2004 宠物收容所 平衡树/set
    [连载]Java程序设计(04)---任务驱动的方法:工资结算系统
  • 原文地址:https://www.cnblogs.com/fangyu19900812/p/3285200.html
Copyright © 2011-2022 走看看