<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Read Sean

    Read me, read Sean.
    posts - 508, comments - 655, trackbacks - 9, articles - 4

    [Pylons] 在Pylons環(huán)境下使用SQLAlchemy

    Posted on 2009-01-27 14:00 laogao 閱讀(1188) 評論(0)  編輯  收藏 所屬分類: On Python

    在前面的4篇隨筆中,我們簡要的介紹了SQLAlchemy,不過SQLAlchemy如何被集成到Pylons應用中呢?

    首先我們看一下自動生成代碼中的model子目錄,其中有兩個文件__init__.py和meta.py,其中meta.py定義了engine、Session和metadata三個公用變量,而__init__.py提供了一個核心的init_model(engine)方法,該方法分別將數(shù)據(jù)庫engine和經(jīng)過sessionmaker和scoped_session包裝的Session對象植入到meta中,像這樣:
    ????sm?=?orm.sessionmaker(autoflush=True,?autocommit=True,?bind=engine)

    ????meta.engine?
    =?engine
    ????meta.Session?
    =?orm.scoped_session(sm)

    這樣一來,整個背后的"magic"就還剩下最后一塊"拼圖":誰來把engine初始化好并調用init_model方法呢?看看config/environment.py就清楚了:
    ?1?"""Pylons?environment?configuration"""
    ?2?import?os
    ?3?
    ?4?from?mako.lookup?import?TemplateLookup
    ?5?from?pylons.error?import?handle_mako_error
    ?6?from?pylons?import?config
    ?7?from?sqlalchemy?import?engine_from_config
    ?8?
    ?9?import?newapp.lib.app_globals?as?app_globals
    10?import?newapp.lib.helpers
    11?from?newapp.config.routing?import?make_map
    12?from?newapp.model?import?init_model
    13?
    14?def?load_environment(global_conf,?app_conf):
    15?????"""Configure?the?Pylons?environment?via?the?``pylons.config``
    16?????object
    17?????"""
    18?????#?Pylons?paths
    19?????root?=?os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    20?????paths?=?dict(root=root,
    21??????????????????controllers=os.path.join(root,?'controllers'),
    22??????????????????static_files=os.path.join(root,?'public'),
    23??????????????????templates=[os.path.join(root,?'templates')])
    24?
    25?????#?Initialize?config?with?the?basic?options
    26?????config.init_app(global_conf,?app_conf,?package='newapp',?paths=paths)
    27?
    28?????config['routes.map']?=?make_map()
    29?????config['pylons.app_globals']?=?app_globals.Globals()
    30?????config['pylons.h']?=?newapp.lib.helpers
    31?
    32?????#?Create?the?Mako?TemplateLookup,?with?the?default?auto-escaping
    33?????config['pylons.app_globals'].mako_lookup?=?TemplateLookup(
    34?????????directories=paths['templates'],
    35?????????error_handler=handle_mako_error,
    36?????????module_directory=os.path.join(app_conf['cache_dir'],?'templates'),
    37?????????input_encoding='utf-8',?output_encoding='utf-8',
    38?????????imports=['from?webhelpers.html?import?escape'],
    39?????????default_filters=['escape'])
    40?????
    41?????#?Setup?SQLAlchemy?database?engine
    42?????engine?=?engine_from_config(config,?'sqlalchemy.')
    43?????init_model(engine)
    44?????
    45?????#?CONFIGURATION?OPTIONS?HERE?(note:?all?config?options?will?override
    46?????#?any?Pylons?config?options)

    注意第7行的import和第42、43行代碼,是不是豁然開朗?Pylons在初始化運行環(huán)境時,從config中讀取sqlalchemy相關的配置信息,然后通過這些配置信息創(chuàng)建數(shù)據(jù)庫engine,并調用init_model()方法初始化SQLAlchemy功能的核心對象:metadata和Session。有了meta.Session,我們就可以方便的在代碼中執(zhí)行對model層/數(shù)據(jù)庫的訪問了。

    主站蜘蛛池模板: 免费观看无遮挡www的视频| 在线天堂免费观看.WWW| 成全在线观看免费观看大全| 18禁在线无遮挡免费观看网站| 亚洲国产V高清在线观看| 中文国产成人精品久久亚洲精品AⅤ无码精品| 国产精品亚洲产品一区二区三区| 亚洲天堂视频在线观看| 亚洲视频在线观看2018| 亚洲精品视频专区| 日韩亚洲综合精品国产| 免费一级毛片无毒不卡| 成年人视频在线观看免费| 国产成人综合亚洲亚洲国产第一页| yellow视频免费看| 久久WWW免费人成人片| 亚洲日韩小电影在线观看| 中文字幕乱码亚洲无线三区| 四虎成人免费网站在线| 国产l精品国产亚洲区在线观看| 亚洲欧美自偷自拍另类视| 精品在线免费观看| 亚洲尹人九九大色香蕉网站 | 亚洲成A∨人片在线观看不卡| 国内永久免费crm系统z在线| 亚洲AV午夜成人影院老师机影院 | 久久久久久久国产免费看| 四虎影院免费视频| 一级做a爰片性色毛片免费网站 | 91成人免费在线视频| 国产亚洲3p无码一区二区| 羞羞漫画页面免费入口欢迎你| 日韩精品无码区免费专区| 亚洲AV综合色区无码一二三区| 成人无码区免费视频观看| 污网站在线免费观看| 又大又硬又爽免费视频| 亚洲国产美女精品久久久| 国产AV无码专区亚洲AV漫画| 国产大片91精品免费观看不卡| 国产成人人综合亚洲欧美丁香花|