• sqlalchemy+postgreSQL(relationship)


     

    1、连接数据库

    import os,sys
    PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
    sys.path.insert(0, os.path.join(PROJECT_ROOT, 'lib'))
    
    
    CONFIG_PATH = os.path.join(PROJECT_ROOT,'config.cfg')
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    import ConfigParser
    
    
    cf = ConfigParser.ConfigParser()
    cf.read(CONFIG_PATH)
    
    
    print cf.get("db","db_host")
    
    
    if cf.get("db","db_host"):
    db_host=cf.get("db","db_host")
    else:
    db_host= "127.0.0.1"  //之前用localhost 报错链接不上数据库 注意
    
    
    if cf.get("db","db_type"):
    db_type= cf.get("db","db_type")
    else:
    db_type="postgresql+psycopg2"
    
    
     
    
    if cf.get("db","db_name"):
    db_name=cf.get("db","db_name")
    else:
    db_name="luoyun"
    
    
    if cf.get("db","db_user"):
    db_user = cf.get("db","db_user")
    else:
    db_user = "luoyun"
    
    if cf.get("db","db_password"):
    db_password = cf.get("db","db_password")
    else:
    db_password = "luoyun"
    
    str= "%s://%s:%s@%s/%s" % (db_type, db_user,db_password,db_host,db_name)
    #dbengine = create_engine('postgresql+psycopg2://luoyun:luoyun@127.0.0.1/luoyun',echo=True,client_encoding='utf8')
    dbengine = create_engine(str,echo=True,client_encoding='utf8')
    
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    
    ORMBase = declarative_base()
    
    from sqlalchemy.orm import sessionmaker
    
    Session = sessionmaker(bind=dbengine)
    
    dbsession = Session()
    db = dbsession

    2、定义数据表和类之间的映射关系

    import lyorm
    from sqlalchemy import Column, Integer, String, ForeignKey
    from sqlalchemy.orm import relationship, backref
    from lyorm import ORMBase
    
    class User(ORMBase):
         __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)
    
    class Address(ORMBase):
          __tablename__= 'address'
          id = Column(Integer, primary_key=True)
          email_address = Column(String, nullable=False)
          user_id = Column(Integer, ForeignKey('users.id'))
          user = relationship("User", backref = backref('addresses',order_by=id))
    
          def __init__(self,email_address):
              self.email_address = email_address
          def __repr__(self):
               return "<Address('%s')>" % self.email_address
    

      3、配置文件  

    [db]
    db_host = 127.0.0.1
    db_type = postgresql+psycopg2
    db_name = luoyun
    db_user = luoyun
    db_password = luoyun
    

      4、初始化数据库 python manage.py

    import models
    from lyorm import ORMBase, dbengine,dbsession
    ORMBase.metadata.create_all(dbengine)
    from models import User
    
    def init():
    
       jack = User('jack','Jack Bean', '801310')
       dbsession.add(jack)
       dbsession.commit()
    if __name__=='__main__':
      init()
    

      

  • 相关阅读:
    Kotlin 基础
    ViewPager2
    8086-debug指令
    (四)主控板改IP,升级app,boot,mac
    (三)主控板生级uboot与内核
    (四)linux网络编程
    (七)嵌入式系统异常程序远程定位
    (六)ARM状态寄存器-PSR
    (五)stm32工程代码HardFault异常查错调试方法
    (十)makefile
  • 原文地址:https://www.cnblogs.com/dlutxm/p/3045751.html
Copyright © 2020-2023  润新知