锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲熟妇AV乱码在线观看,伊人久久精品亚洲午夜,亚洲免费视频网站http://m.tkk7.com/sean/category/37361.htmlRead me, read Sean.zh-cnTue, 26 Jul 2011 21:12:20 GMTTue, 26 Jul 2011 21:12:20 GMT60pyPdf - 鐢≒ython鏂逛究鐨勫鐞哖DF鏂囨。http://m.tkk7.com/sean/archive/2011/07/26/355089.htmllaogaolaogaoTue, 26 Jul 2011 14:25:00 GMThttp://m.tkk7.com/sean/archive/2011/07/26/355089.htmlhttp://m.tkk7.com/sean/comments/355089.htmlhttp://m.tkk7.com/sean/archive/2011/07/26/355089.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/355089.htmlhttp://m.tkk7.com/sean/services/trackbacks/355089.html 浠婂ぉ涓存椂鏈変釜闇姹傦紝閭e氨鏄粰鏌怭DF鏂囨。鍒囪竟錛屼互鏂逛究鍦↘indle 3鐨?鍚嬪睆涓婇槄璇匯?br />
寰堜箙娌$Python浜嗭紝涓嶈繃鎴戠浉淇$敤Python涓瀹氭湁鍔炴硶瑙e喅榪欎釜闇姹傦紝浜庢槸緇忚繃綆鍗曠殑googling錛屼究鍙戠幇浜嗚繖涓猵yPdf搴?( http://pybrary.net/pyPdf/ ) 錛屾搷浣滆搗鏉ョ浉褰撶洿鎺ユ槗鎳傦紝鎶婁唬鐮佽創鍦ㄨ繖鍎匡紝鍋氫釜璁板綍銆?br />
 1 from pyPdf import PdfFileWriter, PdfFileReader
 2 
 3 pdf = PdfFileReader(file('original.pdf''rb'))
 4 out = PdfFileWriter()
 5 
 6 for page in pdf.pages:
 7   page.mediaBox.upperRight = (580,800)
 8   page.mediaBox.lowerLeft = (128,232)
 9   out.addPage(page)
10 
11 ous = file('target.pdf''wb')
12 out.write(ous)
13 ous.close()

Enjoy!


laogao 2011-07-26 22:25 鍙戣〃璇勮
]]>
[Pylons] Mako欏甸潰妯℃澘寮曟搸http://m.tkk7.com/sean/archive/2009/01/27/252614.htmllaogaolaogaoTue, 27 Jan 2009 07:50:00 GMThttp://m.tkk7.com/sean/archive/2009/01/27/252614.htmlhttp://m.tkk7.com/sean/comments/252614.htmlhttp://m.tkk7.com/sean/archive/2009/01/27/252614.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252614.htmlhttp://m.tkk7.com/sean/services/trackbacks/252614.htmlPylons鏄竴涓吀鍨嬬殑MVC Web妗嗘灦錛屽湪涔嬪墠鐨勫嚑綃囬殢絎斾腑錛屾垜浠竴璧蜂簡瑙d簡Pylons鐨勫畨瑁呫侀粯璁ら」鐩粨鏋勩丷outes鍜宑ontroller("C")浠ュ強SQLAlchemy("M")錛屽湪榪欎釜緋誨垪鐨勬渶鍚庯紝鎴戜滑涓璧鋒潵鐪嬬湅"V"銆?br />
鍦ㄦ垜浠殑controller浠g爜涓紝姣忎釜action鍦╮eturn鐨勬椂鍊欙紝鍙互閫夋嫨錛?br />1- 鐩存帴return瀛楃涓?br />2- 閫氳繃render()鍑芥暟灝嗚緭鍑轟氦緇欓〉闈㈡ā鏉垮紩鎿庡鐞?br />3- redirect_to()閲嶅畾鍚戝埌鍏朵粬URL

鐩存帴return澶畝鍗曪紝redirect_to涔熸病鏈夌壒鍒渶瑕佷粙緇嶇殑錛岄噸鐐圭湅render()銆傚鏋滀綘涓鐩磃ollow榪欎釜緋誨垪錛岄偅涔堝湪浣犵殑controllers/hello.py涓紝鍙互鐪嬪埌榪欐牱涓琛宨mport錛?br />
from聽newapp.lib.base聽import聽BaseController,聽render

浠巐ib.base寮曞叆浜嗕竴涓猺ender鍑芥暟錛岃窡鍒發ib/base浠g爜閲屾煡鐪嬶紝鎴戜滑浼氱煡閬擄細
from聽pylons.templating聽import聽render_mako聽as聽render
鍏跺疄鎴戜滑鐢ㄥ埌鐨剅ender()鍑芥暟錛屾槸pylons.templating.render_mako鐨勫埆鍚嶃?br />
娉? 榪欓噷鍋囧畾浣犲湪paster create鏃墮夋嫨浜嗛粯璁ょ殑mako錛屽叾浠朠ylons鍘熺敓鏀寔鐨勯〉闈㈡ā鏉垮紩鎿庤繕鏈夌粨鏋勭浉瀵規洿灞傛鍖栫殑Genshi鍜屾洿鎺ヨ繎Django瀹炵幇鐨凧inja銆?br />
render_mako()鍑芥暟絳懼悕濡備笅錛?br />render_mako(template_name, extra_vars=None, cache_key=None, cache_type=None, cache_expire=None)

鏈鍩烘湰鐨勭敤娉曟槸緇欏嚭template鏂囦歡鍚嶏紝鐒跺悗閫氳繃extra_vars浼犲叆鍙傛暟錛孭ylons榛樿鏌ユ壘欏甸潰妯℃澘鏂囦歡鏄湪欏圭洰鐨則emplates瀛愮洰褰曪紝榪欎釜璺緞涔熷彲浠ュ湪config/environment.py涓慨鏀廣傚湪Pylons涓紝琚帹鑽愮殑浼犲弬鍋氭硶鏄嬌鐢╰mpl_context錛屽湪鐢熸垚controller鐨勬椂鍊欙紝宸茬粡鑷姩import浜唗mpl_context騫跺埆鍚嶄負c錛岃繖鏍鳳紝鎴戜滑鍙渶瑕佸湪c涓婄粦涓婃垜浠渶瑕佷紶閫掔粰妯℃澘鐨勬暟鎹紝妯℃澘鍦ㄨВ鏋愭椂錛屼篃灝辮兘澶熼氳繃c寰楀埌榪欎簺鏁版嵁浜嗐傚儚榪欐牱錛?br />
c.name聽=聽u'Pylons聽n00b'
return聽render('hello.mako')

鐒跺悗錛屽湪hello.mako涓細
<h3>Hello聽<b>${c.name}</b>!</h3>

鍦ㄦā鏉夸唬鐮佷腑錛屾湁浜汸ylons緋葷粺鍙橀噺/鍑芥暟鏄彲浠ョ洿鎺ヨ闂殑錛屽寘鎷細
tmpl_context (c) - 鐢ㄤ簬controller鍜宼emplate浼犻掓暟鎹?br />config - 閰嶇疆淇℃伅
app_globals (g) - 搴旂敤鐨勫叏灞鍙橀噺
h - WebHelpers錛屽寘鎷琱.form銆乭.link_to銆乭.url_for絳夌瓑瀹炵敤鍑芥暟
request - 璇鋒眰
response - 搴旂瓟
session - 浼氳瘽淇℃伅
translator銆乽ngettext()銆乢()銆丯_() - 澶勭悊鍥介檯鍖?br />
闄や簡鍩烘湰鐨?{}鍙橀噺鏇夸唬璇硶涔嬪錛岀被浼糐SP錛孧ako榪樻敮鎸佹敞閲娿乮f/else/for鎺у埗閫昏緫銆佷唬鐮佺墖孌點乺eturn銆佹爣絳劇瓑錛屽叿浣撶殑鍙互鎵竴鐪煎畼鏂硅鏄庯細
http://www.makotemplates.org/docs/syntax.html
寰堢簿綆錛屼篃闈炲父瀹規槗鐞嗚В錛岃繖閲屽氨涓嶈緇嗚鏄庝簡銆?br />
鑷蟲錛屾垜浠凡緇忎簡瑙d簡Pylons鏈鏍稿績鐨勫嚑涓粍浠訛紝瓚沖鎴戜滑鎼緩甯歌鐨刉eb搴旂敤浜嗐傚叾浠栧煎緱澶у緇х畫鎸栨帢鐨勫唴瀹瑰寘鎷細鍥介檯鍖栥佽〃鍗曢獙璇?FormEncode)銆佺敤鎴烽獙璇佸拰鏉冮檺(AuthKit銆乺epoze.who銆乺epoze.what)銆丄JAX銆丳ython 3.0銆乄SGI鍩虹鏋舵瀯絳夈?br />
鏈枃鏄緋誨垪鏈鍚庝竴綃囷紝甯屾湜閫氳繃綆鍗曠殑浠嬬粛鍜屽涔狅紝澶у鑳藉鍠滄騫墮『鍒╃殑涓婃墜Pylons錛屼篃甯屾湜瓚婃潵瓚婂鐨勪漢鍏蟲敞榪欎釜浼樼鐨凱ython Web搴旂敤妗嗘灦銆?br />


laogao 2009-01-27 15:50 鍙戣〃璇勮
]]>
[Pylons] 鍦≒ylons鐜涓嬩嬌鐢⊿QLAlchemyhttp://m.tkk7.com/sean/archive/2009/01/27/252612.htmllaogaolaogaoTue, 27 Jan 2009 06:00:00 GMThttp://m.tkk7.com/sean/archive/2009/01/27/252612.htmlhttp://m.tkk7.com/sean/comments/252612.htmlhttp://m.tkk7.com/sean/archive/2009/01/27/252612.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252612.htmlhttp://m.tkk7.com/sean/services/trackbacks/252612.html鍦ㄥ墠闈㈢殑4綃囬殢絎斾腑錛屾垜浠畝瑕佺殑浠嬬粛浜哠QLAlchemy錛屼笉榪嘢QLAlchemy濡備綍琚泦鎴愬埌Pylons搴旂敤涓憿錛?br />
棣栧厛鎴戜滑鐪嬩竴涓嬭嚜鍔ㄧ敓鎴愪唬鐮佷腑鐨刴odel瀛愮洰褰曪紝鍏朵腑鏈変袱涓枃浠禵_init__.py鍜宮eta.py錛屽叾涓璵eta.py瀹氫箟浜唀ngine銆丼ession鍜宮etadata涓変釜鍏敤鍙橀噺錛岃宊_init__.py鎻愪緵浜嗕竴涓牳蹇冪殑init_model(engine)鏂規硶錛岃鏂規硶鍒嗗埆灝嗘暟鎹簱engine鍜岀粡榪噑essionmaker鍜宻coped_session鍖呰鐨凷ession瀵硅薄妞嶅叆鍒癿eta涓紝鍍忚繖鏍鳳細
聽聽聽聽sm聽=聽orm.sessionmaker(autoflush=True,聽autocommit=True,聽bind=engine)

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

榪欐牱涓鏉ワ紝鏁翠釜鑳屽悗鐨?magic"灝辮繕鍓╀笅鏈鍚庝竴鍧?鎷煎浘"錛氳皝鏉ユ妸engine鍒濆鍖栧ソ騫惰皟鐢╥nit_model鏂規硶鍛紵鐪嬬湅config/environment.py灝辨竻妤氫簡錛?br />
聽1"""Pylons聽environment聽configuration"""
聽2import聽os
聽3
聽4from聽mako.lookup聽import聽TemplateLookup
聽5from聽pylons.error聽import聽handle_mako_error
聽6from聽pylons聽import聽config
聽7from聽sqlalchemy聽import聽engine_from_config
聽8
聽9import聽newapp.lib.app_globals聽as聽app_globals
10import聽newapp.lib.helpers
11from聽newapp.config.routing聽import聽make_map
12from聽newapp.model聽import聽init_model
13
14def聽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)

娉ㄦ剰絎?琛岀殑import鍜岀42銆?3琛屼唬鐮侊紝鏄笉鏄眮鐒跺紑鏈楋紵Pylons鍦ㄥ垵濮嬪寲榪愯鐜鏃訛紝浠巆onfig涓鍙杝qlalchemy鐩稿叧鐨勯厤緗俊鎭紝鐒跺悗閫氳繃榪欎簺閰嶇疆淇℃伅鍒涘緩鏁版嵁搴揺ngine錛屽茍璋冪敤init_model()鏂規硶鍒濆鍖朣QLAlchemy鍔熻兘鐨勬牳蹇冨璞★細metadata鍜孲ession銆傛湁浜唌eta.Session錛屾垜浠氨鍙互鏂逛究鐨勫湪浠g爜涓墽琛屽model灞?鏁版嵁搴撶殑璁塊棶浜嗐?br />


laogao 2009-01-27 14:00 鍙戣〃璇勮
]]>
[Pylons] SQLAlchemy璧鋒 - IV. Object Relational Mapperhttp://m.tkk7.com/sean/archive/2009/01/27/252609.htmllaogaolaogaoTue, 27 Jan 2009 04:52:00 GMThttp://m.tkk7.com/sean/archive/2009/01/27/252609.htmlhttp://m.tkk7.com/sean/comments/252609.htmlhttp://m.tkk7.com/sean/archive/2009/01/27/252609.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252609.htmlhttp://m.tkk7.com/sean/services/trackbacks/252609.html鎺ョ潃鍓嶉潰鐨勪緥瀛愯錛屾垜浠畾涔変簡book_table鍜宎uthor_table錛屾帴涓嬫潵錛?br />
聽1class聽Book(object):
聽2聽聽聽聽def__init__(self,聽title):
聽3聽聽聽聽聽聽聽聽self.title聽=聽title
聽4聽聽聽聽def__repr__(self):
聽5聽聽聽聽聽聽聽聽return"<Book('%s')>"%聽self.title
聽6
聽7class聽Author(object):
聽8聽聽聽聽def__init__(self,聽name):
聽9聽聽聽聽聽聽聽聽self.name聽=聽name
10聽聽聽聽def__repr__(self):
11聽聽聽聽聽聽聽聽return"<Author('%s')>"%聽self.name

榪欓噷鎴戜滑瀹氫箟涓や釜綾伙紝緇ф壙鑷猳bject錛岀被浼糐avaBeans鎴栬匬OJO錛岃繖閲岀殑__init__鏂規硶鍜宊_repr__鏂規硶涓嶆槸蹇呴』鐨勶紝鍙槸涓轟簡鍒涘緩瀵硅薄鍜岃緭鍑哄璞″唴瀹規瘮杈冩柟渚褲傜劧鍚庡氨鍙互鐢⊿QLAlchemy鐨刴apper鍜宻essionmaker鏉ュ緩绔嬫槧灝勫叧緋誨茍澶勭悊鎸佷箙鍜屾煡璇㈢瓑鎿嶄綔錛?br />
聽1from聽sqlalchemy.orm聽import聽mapper,sessionmaker
聽2
聽3mapper(Book,聽book_table)
聽4mapper(Author,聽author_table)
聽5
聽6Session聽=聽sessionmaker(bind=engine)
聽7session聽=聽Session()
聽8
聽9gia聽=聽Book(u'Groovy聽in聽Action')
10ag聽=聽Author(u'Andrew聽Glover')
11
12session.add(gia)
13session.add(ag)
14session.add_all([Book('Hibernate聽in聽Action'),聽Author('Gavin聽King')])
15s_gia聽=聽session.query(Book).filter_by(title=u'Groovy聽in聽Action').first()
16s_gia.title聽=u'Groovy聽in聽Action聽Updated'
17
18print"[DIRTY]",聽session.dirty
19
20session.commit() # or session.rollback()

濡傛灉浣犵敤榪嘓ibernate錛岄偅涔堣繖浜涗唬鐮佸浣犳潵璇達紝鐞嗚В璧鋒潵搴旇娌℃湁浠諱綍闅懼害銆?br />
鍋囧鎴戝憡璇変綘錛屾瘡嬈¢兘瑕佸儚榪欐牱鍏堝畾涔塗able(schema)錛屽啀瀹氫箟class錛岀劧鍚庣敤mapper寤虹珛瀵圭収錛屾槸涓嶆槸鏈夌偣閭e暐錛烻QLAlchemy鐨勫紑鍙戣呬滑涔熸剰璇嗗埌榪欎竴鐐癸紝鎵浠ヤ粠0.5寮濮嬶紝SQLAlchemy鍙互閫氳繃sqlalchemy.ext.declarative鏀寔鎴戜滑瀹炵幇鏇寸揣鍑戠殑model/schema瀹氫箟錛?br />
聽1from聽sqlalchemy.schema聽import聽Table,聽Column,聽ForeignKey,聽Sequence
聽2from聽sqlalchemy.types聽import*
聽3from聽sqlalchemy.orm聽import聽relation
聽4from聽sqlalchemy.ext.declarative聽import聽declarative_base
聽5
聽6Base聽=聽declarative_base()
聽7metadata聽=聽Base.metadata
聽8
聽9bookauthor_table聽=聽Table('bookauthor',聽metadata,
10聽聽聽聽Column('book_id',聽Integer,聽ForeignKey('book.id'),聽nullable=False),
11聽聽聽聽Column('author_id',聽Integer,聽ForeignKey('author.id'),聽nullable=False),
12)
13
14class聽Book(Base):
15聽聽聽聽__tablename__='book'
16聽聽聽聽id聽=聽Column(Integer,聽Sequence('seq_pk'),聽primary_key=True)
17聽聽聽聽title聽=聽Column(Unicode(255),聽nullable=False)
18聽聽聽聽authors聽=聽relation('Author',聽secondary=bookauthor_table)
19
20
21class聽Author(Base):
22聽聽聽聽__tablename__='author'
23聽聽聽聽id聽=聽Column(Integer,聽Sequence('seq_pk'),聽primary_key=True)
24聽聽聽聽name聽=聽Column(Unicode(255),聽nullable=False)
25聽聽聽聽books聽=聽relation('Book',聽secondary=bookauthor_table)

榪欓噷鎴戜滑鐢ㄥ埌浜唌any-to-many鍏崇郴錛屽叾浠栫殑甯歌鐢ㄦ硶榪樺寘鎷琺any-to-one銆乷ne-to-many銆丣OIN銆佸瓙鏌ヨ銆丒XISTS銆丩azy/Eager Load銆丆ascade (all/delete/delete-orphan)絳夌瓑錛屽ぇ瀹跺彲浠ユ牴鎹渶瑕佹煡闃呭畼鏂規枃妗c?br />


laogao 2009-01-27 12:52 鍙戣〃璇勮
]]>
[Pylons] SQLAlchemy璧鋒 - III. SQL Expression Languagehttp://m.tkk7.com/sean/archive/2009/01/26/252599.htmllaogaolaogaoMon, 26 Jan 2009 15:40:00 GMThttp://m.tkk7.com/sean/archive/2009/01/26/252599.htmlhttp://m.tkk7.com/sean/comments/252599.htmlhttp://m.tkk7.com/sean/archive/2009/01/26/252599.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252599.htmlhttp://m.tkk7.com/sean/services/trackbacks/252599.html鍦ㄤ粙緇峉QLAlchemy鏈鏍稿績鏈鏈変環鍊肩殑ORM閮ㄥ垎涔嬪墠錛屾垜浠啀綆鍗曡繃涓閬峉QLAlchemy鎻愪緵鐨凷QL Expression Language鐢ㄦ硶錛屽氨浠庢渶鍩烘湰鐨凜RUD鏉ヤ婦渚嬭鏄庡惂錛堟帴鐫涓婁竴綃囩殑紺轟緥錛夛細

聽1from聽sqlalchemy聽import聽select,update,delete
聽2
聽3conn聽=聽engine.connect()
聽4book_ins聽=聽book_table.insert(values=dict(title=u'Groovy聽in聽Action'))
聽5author_ins聽=聽author_table.insert(values=dict(name=u'Andrew聽Glover'))
聽6conn.execute(book_ins)
聽7conn.execute(author_ins)
聽8book聽=聽conn.execute(select([book_table],聽book_table.c.title.like(u'Groovy%'))).fetchone()
聽9author聽=聽conn.execute(select([author_table])).fetchone()
10bookauthor_ins聽=聽bookauthor_table.insert(values=dict(book_id=book[0],author_id=author[0]))
11conn.execute(bookauthor_ins)
12conn.execute(update(book_table,book_table.c.title==u'Groovy聽in聽Action'),聽title=u'Groovy聽in聽Action聽(涓枃鐗?')
13conn.execute(delete(bookauthor_table))
14conn.close()

綆鍗曡鏄庝竴涓嬩唬鐮侀昏緫錛?br />棣栧厛浠巈ngine寤虹珛榪炴帴錛岀劧鍚庡仛涓や釜insert鍔ㄤ綔錛屽垎鍒玦nsert涓鏉ook璁板綍(title涓?Groovy in Action')鍜屼竴鏉uthor璁板綍(name涓?Andrew Glover')錛岃繖涔嬪悗鍒嗗埆鍐嶅仛涓ゆselect錛屽緱鍒板垰insert鐨勮繖涓ゆ潯璁板綍錛屽叾涓璪ook璁板綍鐨剆elect鐢ㄥ埌浜嗚繃婊ゆ潯浠訛紝鐩稿綋浜?WHERE book.title like 'Groovy%'"錛岀劧鍚庢瀯寤轟竴鏉℃柊鐨刬nsert璇彞錛岀敤浜巌nsert涓鏉ookauthor鍏崇郴璁板綍錛屾帴涓嬫潵錛屽仛涓嬈pdate錛屽皢book.title涓?Groovy in Action'鐨勬洿鏂頒負'Groovy in Action (涓枃鐗?'錛屾渶鍚庯紝鍦ㄥ叧闂繛鎺ヤ箣鍓嶏紝鍋氫竴嬈elete錛屽垹闄ookauthor涓殑璁板綍銆?br />
鍦ㄦ寚瀹歐HERE鏉′歡鏃訛紝.c鏄?columns鐨勭畝鍐欙紝鎵浠ook_table.c.title鎸囦唬鐨勫氨鏄痓ook琛ㄧ殑title鍒椼傛洿楂樼駭鐨勭敤娉曟槸閲囩敤"&"銆?|"銆?!"涓変釜絎﹀彿錛屽垎鍒〃紺篈ND銆丱R鍜孨OT錛屽姞涓婂繀瑕佺殑"("鍜?)"瀹炵幇澶嶆潅鐨勬潯浠跺畾涔夈傜敱浜庝紶閫掔粰select()鐨勭涓涓弬鏁版槸涓猯ist錛屾墍浠ヤ綘搴旇宸茬粡鐚滃埌浜嗭紝鎴戜滑涔熷彲浠ュ寮犺〃鍋氬叧鑱旀煡璇€?br />


laogao 2009-01-26 23:40 鍙戣〃璇勮
]]>
[Pylons] SQLAlchemy璧鋒 - II. MetaData鍜孴ypeshttp://m.tkk7.com/sean/archive/2009/01/26/252597.htmllaogaolaogaoMon, 26 Jan 2009 14:14:00 GMThttp://m.tkk7.com/sean/archive/2009/01/26/252597.htmlhttp://m.tkk7.com/sean/comments/252597.htmlhttp://m.tkk7.com/sean/archive/2009/01/26/252597.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252597.htmlhttp://m.tkk7.com/sean/services/trackbacks/252597.html鍦╯qlalchemy.schema鍜宻qlalchemy.types榪欎袱涓猰odule涓紝鍖呭惈浜嗗畾涔夋暟鎹簱schema鎵闇瑕佺殑鎵鏈夌被錛屽Table銆丆olumn銆丼tring銆乀ext銆丏ate銆乀ime銆丅oolean絳夈傝繕鏄潵鐪嬩竴涓緥瀛愶細

聽1from聽sqlalchemy.engine聽import聽create_engine
聽2from聽sqlalchemy.schema聽import聽MetaData,聽Table,聽Column,聽ForeignKey,聽Sequence
聽3from聽sqlalchemy.types聽import*
聽4
聽5engine聽=聽create_engine('postgres://test:test@localhost/test',聽echo=True)
聽6
聽7metadata聽=聽MetaData()
聽8metadata.bind聽=聽engine
聽9
10book_table聽=聽Table('book',聽metadata,
11聽聽聽聽Column('id',聽Integer,聽Sequence('seq_pk'),聽primary_key=True),
12聽聽聽聽Column('title',聽Unicode(255),聽nullable=False),
13)
14
15author_table聽=聽Table('author',聽metadata,
16聽聽聽聽Column('id',聽Integer,聽Sequence('seq_pk'),聽primary_key=True),
17聽聽聽聽Column('name',聽Unicode(255),聽nullable=False),
18)
19
20bookauthor_table聽=聽Table('bookauthor',聽metadata,
21聽聽聽 Column('book_id',聽Integer,聽ForeignKey('book.id'),聽nullable=False),
22聽聽聽 Column('author_id',聽Integer,聽ForeignKey('author.id'),聽nullable=False),
23)
24
25metadata.create_all(checkfirst=True)

棣栧厛鎴戜滑榪樻槸create_engine錛岀劧鍚庢柊寤轟竴涓狹etaData瀵硅薄錛屾妸engine緇戜笂鍘伙紝鎺ヤ笅鏉ワ紝寮濮嬪湪metadata涓畾涔夎〃緇撴瀯(metadata鐢盩able鏋勯犲嚱鏁頒紶鍏?錛屾垜浠繖閲屽畾涔変簡3寮犺〃錛屽垎鍒槸book銆乤uthor鍜宐ookauthor鍏崇郴琛?鈥滃瀵瑰鈥?錛屽叾涓柊寤轟竴涓猄equence瀵硅薄錛屼笓闂ㄥ鐞嗕富閿敓鎴愩傛渶鍚庢垜浠氳繃鎵цmetadata.create_all()鍒涘緩鏁版嵁搴撹〃錛屽弬鏁癱heckfirst=True琛ㄧず濡傛灉鏁版嵁搴撶浉鍏沖璞″凡緇忓瓨鍦紝鍒欎笉閲嶅鎵ц鍒涘緩銆?br />
瀵逛簬宸茬粡瀛樺湪浜庢暟鎹簱涓殑琛紝鎴戜滑鍙互閫氳繃浼犲叆autoload=True鍙傛暟鍒癟able鏋勯犲嚱鏁扮殑鏂瑰紡鏉ュ姞杞界幇鏈夌殑琛ㄧ粨鏋勫埌metadata涓紝鑰屼笉蹇呮尐涓効鍐嶅啓涓閬岰olumn娓呭崟銆?br />
鐪嬪埌榪欏効錛屼綘涔熻瑙夊緱鎸洪夯鐑︼紝涓嶆槸涔堬紵Django鍜孯oR閮芥槸鍙互鐩存帴瀹氫箟鏁版嵁model綾伙紝欏哄甫灝辨妸schema涔熷畾涔変簡錛岃屼笉鏄儚榪欐牱鍗曠嫭鍘誨啓琛ㄧ粨鏋勭殑schema錛屾樉寰楀緢"搴曞眰"銆傜‘瀹烇紝榪欐牱鐢⊿QLAlchemy騫朵笉鏄渶浼樺寲鐨勶紝SQLAlchemy鏈韓騫朵笉浼氳嚜鍔ㄧ殑甯綘鍋氬緢澶氫簨錛屼絾瀹冨熀紜鎵撳緱寰堢墷銆傚鏋滀綘鎰熷叴瓚o紝涔熷彲浠ュ厛鍘葷湅涓涓婼QLAlchemy鐨勬墿灞曟ā鍧桬lixir錛岄氳繃Elixir錛屼綘鍙互鍍廟uby on Rails閭f牱瀹氫箟鍑哄疄浣撳拰鍏崇郴("Active Record")銆?br />
鍦ㄧ◢鍚庣殑絎?閮ㄥ垎涓紝鎴戜滑浼氬幓浜嗚В濡備綍浠ュ0鏄庢柟寮忔潵鏇寸揣鍑戠殑瀹氫箟鎴戜滑鐨刴odel/schema(0.5鏂扮壒鎬?銆傞壌浜庣瑪鑰呭懼悜浜庢洿寮虹殑鎺у埗鍔涳紝鎵浠ュ湪榪欎釜緋誨垪涓氨涓嶅幓浠嬬粛SQLAlchemy鐨勫叾浠栨墿灞曟ā鍧椾簡錛屽Elixir銆丼QLSoup絳夛紝澶у鍙互鏍規嵁闇瑕佸幓鎵句笅瀹樻柟鏂囨。銆?br />


laogao 2009-01-26 22:14 鍙戣〃璇勮
]]>
[Pylons] SQLAlchemy璧鋒 - I. Engine APIhttp://m.tkk7.com/sean/archive/2009/01/26/252592.htmllaogaolaogaoMon, 26 Jan 2009 12:46:00 GMThttp://m.tkk7.com/sean/archive/2009/01/26/252592.htmlhttp://m.tkk7.com/sean/comments/252592.htmlhttp://m.tkk7.com/sean/archive/2009/01/26/252592.html#Feedback1http://m.tkk7.com/sean/comments/commentRss/252592.htmlhttp://m.tkk7.com/sean/services/trackbacks/252592.htmlORM鏄釜澶ц瘽棰橈紝澶у埌鍙兘濂藉嚑鏈功閮借涓嶅畬銆係QLAlchemy錛屽埆鐪嬪畠鍒氬嚭鍒?.5.2錛屽凡鐒舵槸Python涓栫晫ORM鐨勪簨瀹炴爣鍑嗭紝鍙楀埌浼楀寮鍙戣呭拰鏃犳暟妗嗘灦鐨勯潚鐫愩?br />
濡傛灉涔嬪墠娌℃湁鎴栧緢灝戞帴瑙QLAlchemy錛岄偅涔堝涔燩ylons鍙兘鏈夌浉褰撲竴閮ㄥ垎鏃墮棿閮戒細鑺卞湪SQLAlchemy涓娿傞氬父錛屼漢浠夋嫨Pylons鎴栬匱urboGears鑰屼笉鏄疍jango錛孲QLAlchemy鍦ㄨ繖浜涘喅瀹氱殑鑳屽悗鏈夌潃寰堥噸鐨勫垎閲忋備綔涓篜ylons瀛︿範絎旇鐨勪竴閮ㄥ垎錛屾帴涓嬫潵鎴戝皢鍒?綃囬殢絎斾粙緇峉QLAlchemy錛屽垎鍒槸Engine API銆丼chema Management (MetaData/Types)銆丼QL Expression Language鍜孫bject Relational Mapper銆傛鏂囦負絎?綃囷紝閲嶇偣浠嬬粛Engine API銆?br />
綾諱技Java鐨凧DBC錛孭ython涔熸湁涓涓被浼肩殑鏁版嵁搴撹闂帴鍙h鑼冿紝閭e氨鏄疍B-API(鐩墠鏄?.0)錛屼笉鍚岀殑甯歌RDBMS閮芥湁絎﹀悎DB-API鏍囧噯鐨凱ython搴擄紝姣斿PostgreSQL鏈塸sycopg2錛孫racle鏈塩x_Oracle絳夈傛湁浜嗚繖涓熀紜錛孲QLAlchemy涔熷氨寰椾互鏂逛究鐨勯氳繃DB-API榪炴帴涓嶅悓鐨勬暟鎹簱銆?br />
浠ostgreSQL涓轟緥錛岄氳繃SQLAlchemy鐨凟ngine API璁塊棶鏁版嵁搴撶殑浠g爜鍙互榪欐牱鏉ュ啓錛?br />
聽1from聽sqlalchemy.engine聽import聽create_engine
聽2
聽3engine聽=聽create_engine('postgres://user:pass@localhost/testdb')
聽4connection聽=聽engine.connect()
聽5connection.execute(
聽6聽聽聽聽"""
聽7聽聽聽聽CREATE聽TABLE聽book
聽8聽聽聽聽(
聽9聽聽聽聽聽 id聽serial聽NOT聽NULL,
10聽聽聽聽聽title聽character聽varying(30)聽NOT聽NULL,
11聽聽聽聽聽CONSTRAINT pk_book PRIMARY聽KEY聽(id)
12聽聽聽聽);
13聽聽 """
14)
15connection.execute(
16聽聽聽聽"""
17聽聽聽聽INSERT聽INTO聽book聽(title)聽VALUES聽(%s);
18聽聽聽聽""",
19聽聽聽聽"The聽Art聽of聽UNIX聽Programming"
20)
21rs聽=聽connection.execute("SELECT title FROM book")
22for聽row聽in聽rs:
23聽聽聽聽print"Book聽Title:聽",聽row['title']
24connection.close()

鍩烘湰姝ラ灝辨槸create_engine銆乧onnect銆乪xecute鍜宑lose錛屾病鏈夊緢鐗瑰埆鐨勫湴鏂癸紝涓嶈繃SQLAlchemy鐨凟ngine API錛屽茍涓嶆槸綆鍗曠殑DBAPI璋冪敤錛岃屾槸鍖呰浜嗗叾浠栧唴瀹癸紝濡傛暟鎹簱榪炴帴姹狅紝鎴戜滑鍙互鍦╟reate_engine鐨勬椂鍊欐寚瀹氳繛鎺ユ睜鍙傛暟鍜屽叾浠栭澶栭厤緗紝綾諱技榪欐牱錛?br />
engine聽=聽create_engine('postgres://user:pass@localhost/testdb',聽pool_size=10, convert_unicode=True)

綾諱技Spring鐨凧dbcTemplate錛屾洿澶氱殑鏃跺欙紝緇熶竴浣跨敤SQLAlchemy鐨凟ngine API鑰屼笉鏄疍B-API鑳界粰鎴戜滑甯︽潵鏇村ぇ鐨勭伒媧繪э紝閫氬父涔熸洿鏂逛究銆佹洿瀹夊叏銆?br />


laogao 2009-01-26 20:46 鍙戣〃璇勮
]]>
[Pylons] Routes鍜宑ontroller錛屼竴涓畝鍗曠殑渚嬪瓙http://m.tkk7.com/sean/archive/2009/01/26/252583.htmllaogaolaogaoMon, 26 Jan 2009 08:21:00 GMThttp://m.tkk7.com/sean/archive/2009/01/26/252583.htmlhttp://m.tkk7.com/sean/comments/252583.htmlhttp://m.tkk7.com/sean/archive/2009/01/26/252583.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252583.htmlhttp://m.tkk7.com/sean/services/trackbacks/252583.html鍦ㄥ紑濮嬩箣鍓嶏紝璇寸偣鎻愬璇濓紝闅忕潃瀵筆ylons浜嗚В鐨勬繁鍏ワ紝浣犲彲鑳芥椂涓嶆椂闇瑕佺湅鐪嬬浉鍏崇粍浠?杞歡鍖呮槸鍚︽湁鏇存柊鍑烘潵錛屾柟娉曚篃涓嶅鏉傦紝閫氳繃"easy_install -U [緇勪歡鍚峕"鍗沖彲錛屽湪瀛︿範鎴栬呮槸寮鍙戣繃紼嬩腑錛屾渶濂芥槸淇濇寔鐜鐩稿杈冩柊錛岀洿鍒板嚭鐜扮浉瀵瑰ぇ鐨剅elease鎴栬呭嵆灝嗚繘鍏ヤ駭鍝侀儴緗查樁孌點?br />
緇х畫浠嬬粛Pylons緇勪歡錛屽厛鐪嬩釜渚嬪瓙銆傞鍏堢敤"paster controller hello"澧炲姞涓涓猚ontroller錛岃礬寰勪腑浼氬鍔犲嚭浠ヤ笅涓や釜鏂囦歡錛?br />
controllers/hello.py
tests/functional/test_hello.py

鍒嗗埆瀵瑰簲鏂板鐨刢ontroller綾籋elloController鍜屽姛鑳芥祴璇曠被TestHelloController錛屽畠浠垎鍒戶鎵胯嚜WSGIController->BaseController鍜孴estCase->TestController銆?br />
鎴戜滑涓昏鐪媓ello.py錛岄粯璁ゅ唴瀹瑰涓嬶細
聽1import聽logging
聽2
聽3from聽pylons聽import聽request,聽response,聽session,聽tmpl_context聽as聽c
聽4from聽pylons.controllers.util聽import聽abort,聽redirect_to
聽5
聽6from聽newapp.lib.base聽import聽BaseController,聽render
聽7#from聽newapp聽import聽model
聽8
聽9log聽=聽logging.getLogger(__name__)
10
11class聽HelloController(BaseController):
12
13聽聽聽聽def聽index(self):
14聽聽聽聽聽聽聽聽#聽Return聽a聽rendered聽template
15聽聽聽聽聽聽聽聽#聽聽聽return聽render('/template.mako')
16聽聽聽聽聽聽聽聽#聽or,聽Return聽a聽response
17聽聽聽聽聽聽聽聽return'Hello聽World'

濡傛灉浣犵殑鏈嶅姟鍣ㄦ病鏈塁trl-C鍋滄帀錛岄偅涔堣繖涓椂鍊欎綘宸茬粡鍙互閫氳繃
http://127.0.0.1:5000/hello/index
鐪嬪埌璇ontroller鐨勫鐞嗙粨鏋滀簡(Hello World)銆?br />
綆鍗曟敼閫犱竴涓?7琛岋細
聽聽聽聽聽聽聽聽from聽pylons聽import聽config
聽聽聽聽聽聽聽聽
return'<br/>'.join(config.keys())

鎴戜滑灝卞彲浠ュ湪榪斿洖欏甸潰涓婃樉紺哄嚭鎵鏈夊彲浠ラ氳繃pylons.config璁塊棶鍒扮殑鍙傛暟鍒楄〃銆傚嚭浜嗚繑鍥炴枃鏈紝涔熷彲浠ラ氳繃render()鏂規硶浜ょ粰欏甸潰妯℃澘寮曟搸鐢熸垚欏甸潰錛屼篃鍙互閫氳繃redirect_to()璺寵漿鍒板叾浠朥RL銆?br />
Pylons鏄浣曟壘鍒拌璇鋒眰搴旇鐢盚elloController鐨刬ndex鏂規硶鏉ュ鐞嗙殑鍛紵榪欒儗鍚庡彂鐢熶簡浠涔堬紵絳旀灝辨槸Routes銆?br />
Routes鐨勪綔鑰呮槸Ben Bangert錛屾槸Pylons妗嗘灦涓変釜涓昏浣滆?緇存姢鑰呬箣涓錛屾棭鏈熺殑鐗堟湰涓昏鏄豢鐓uby on Rails鐨剅outes.rb寮鍙戠殑錛屾湁RoR緇忛獙鐨勬湅鍙嬪彲鑳戒竴鐪煎氨鑳藉彂鐜板畠浠箣闂寸殑鐩鎬技涔嬪銆傜洰鍓峈outes鐨勬渶鏂扮増鏄?.10.2銆?br />
Pylons搴旂敤涓紝routing鐨勯厤緗湪config/routing.py錛岄粯璁ょ敓鎴愮殑鍐呭濡備笅錛?br />
聽1"""Routes聽configuration
聽2
聽3The聽more聽specific聽and聽detailed聽routes聽should聽be聽defined聽first聽so聽they
聽4may聽take聽precedent聽over聽the聽more聽generic聽routes.聽For聽more聽information
聽5refer聽to聽the聽routes聽manual聽at聽http://routes.groovie.org/docs/
聽6"""
聽7from聽pylons聽import聽config
聽8from聽routes聽import聽Mapper
聽9
10def聽make_map():
11聽聽聽聽"""Create,聽configure聽and聽return聽the聽routes聽Mapper"""
12聽聽聽聽map聽=聽Mapper(directory=config['pylons.paths']['controllers'],
13聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽always_scan=config['debug'])
14聽聽聽聽map.minimization聽=聽False
15聽聽聽聽
16聽聽聽聽#聽The聽ErrorController聽route聽(handles聽404/500聽error聽pages);聽it聽should
17聽聽聽聽#聽likely聽stay聽at聽the聽top,聽ensuring聽it聽can聽always聽be聽resolved
18聽聽聽聽map.connect('/error/{action}',聽controller='error')
19聽聽聽聽map.connect('/error/{action}/{id}',聽controller='error')
20
21聽聽聽聽#聽CUSTOM聽ROUTES聽HERE
22
23聽聽聽聽map.connect('/{controller}/{action}')
24聽聽聽聽map.connect('/{controller}/{action}/{id}')
25
26聽聽聽聽return聽map

鍦ㄨ繖涓厤緗腑錛屽鎴戜滑鍒氭墠鐨勫疄渚嬭搗鍒板喅瀹氭т綔鐢ㄧ殑鏄23琛岋紝鎴戜滑鐨勮緭鍏RL涓?http://127.0.0.1:5000/hello/index"錛屽叾涓?/hello/index"閫氳繃"/{controller}/{action}"榪欎釜琛ㄨ揪寮弇atch鍑篶ontroller涓篽ello鑰宎ction涓篿ndex鐨勮В鏋愮粨鏋滐紝浠庤屽湪controllers鐩綍鎵懼埌hello.py錛屽拰鍏朵腑HelloController鐨刬ndex鏂規硶錛岃繘琛岃皟鐢ㄣ?br />
map.connect()鍦ㄤ笂闈唬鐮佷腑浣撶幇鍑轟袱縐嶇敤娉曪細
map.connect('pattern', key=value) - 鎸囧畾榛樿鐨刢ontroller銆乤ction銆乮d絳?br />map.connect('pattern') - 鐩存帴鎸囧畾pattern

pattern瀛楃涓插厑璁擱氶厤絎︼紝閫氬父鍦ㄦ渶鍚庝竴涓厓绱犱笂錛屾瘮濡?/{controller}/{action}/{*url}'錛屽皢鍚庨潰鐨勬暣涓猆RL鐗囨浜ょ粰鍓嶉潰鎸囧畾鐨刢ontroller/action澶勭悊銆傞櫎姝や互澶栵紝map.connect()榪樻敮鎸?br />
1- "璺緞鍒悕"錛屽錛?br />map.connect('name', 'pattern', [_static=True])
濡傛灉_static璁句負"True"錛岃〃紺轟負"闈欐佸懡鍚嶈礬寰?銆?br />2- 棰濆鐨勫尮閰嶆潯浠訛紝濡傦細
map.connect('/{controller}/{action}/{id}', requirements={'year': '\d+',})
map.connect('/{controller}/{action}/{id}', conditions=dict(method=['GET','POST']))

鎵鏈夌殑route浼樺厛綰т負浠庝笂鍒頒笅銆俁outes闄や簡鎻愪緵瑙f瀽榪涙潵鐨刄RL鐨勯昏緫錛屽湪鎴戜滑鐨刢ontroller鍜宼emplate浠g爜涓紝鎴戜滑榪樺彲浠ユ柟渚跨殑閫氳繃WebHelpers鐨剈rl_for()鏂規硶璁$畻鐩稿簲鐨刄RL銆?br />
Routes 1.x涓殑鏈変竴浜涗豢routes.rb鍔熻兘灝嗕細鍦?.0涓鍘繪帀錛屽寘鎷琑oute Minimization銆丷oute Memory銆両mplicit Defaults絳夈傚鏋滄湁鍏磋叮鐨勮瘽錛屽彲浠ュ弬鑰冧竴涓嬪畼鏂規枃妗o紝榪欓噷灝變笉涓涓浠嬬粛浜嗐備負浠涔堣鍘繪帀錛熷綋鐒朵富瑕佺殑鍔ㄦ満榪樻槸鍑忓皯姝т箟錛岄伩鍏嶄竴浜涗笉蹇呰鐨勬販娣嗐傝嚦浜庢繁灞傛鐨勫師鍥犱箞錛屽彲浠ュ弬鑰僒im Peters銆奣he Zen of Python銆嬩腑鐨勪竴鍙ョ粡鍏哥殑Python鍝插錛欵xplicit is better than implicit銆備粈涔堬紵娌℃湁鍚榪囷紵鎵撳紑python鍛戒護琛岋紝杈撳叆"import this"鍚庡洖杞︼紝鎱㈡參浣撲細鍏朵腑鐨勯亾鐞嗗惂銆?)




laogao 2009-01-26 16:21 鍙戣〃璇勮
]]>
[Pylons] 榛樿欏圭洰緇撴瀯http://m.tkk7.com/sean/archive/2009/01/26/252579.htmllaogaolaogaoMon, 26 Jan 2009 04:33:00 GMThttp://m.tkk7.com/sean/archive/2009/01/26/252579.htmlhttp://m.tkk7.com/sean/comments/252579.htmlhttp://m.tkk7.com/sean/archive/2009/01/26/252579.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252579.htmlhttp://m.tkk7.com/sean/services/trackbacks/252579.html澶у鏂板勾濂斤紒

鍦?a target="_blank" title="http://m.tkk7.com/sean/archive/2009/01/25/252561.html" href="/sean/archive/2009/01/25/252561.html">鍓嶄竴綃囬殢絎?/a>涓紝澶у浜嗚В浜嗕粈涔堟槸Pylons錛屾湁鍝簺鐗圭偣錛屼粖澶╃瑪鑰呯戶緇粰浠嬬粛榛樿鐢熸垚鐨勯」鐩粨鏋勩?br />
閫氳繃Paste鍒涘緩鏂扮殑Pylons搴旂敤寰堢畝鍗曪紝灝辨槸涓鍙?paster create -t pylons [搴旂敤鍚峕"鍛戒護錛屽叾涓?-t pylons"鎴栬呭叏縐?--template=pylons"錛岀敤浠ュ憡璇塒aste鎴戜滑鏂板緩鐨勯」鐩紝灝嗘槸涓涓狿ylons搴旂敤錛屾垨鑰呰錛屼粠涓涓瀹氫箟濂界殑Pylons榛樿欏圭洰妯℃澘鐢熸垚銆傚鏋滀綘鎰挎剰錛屼綘涔熷彲浠ヨ嚜宸辨潵鍒朵綔鏂扮殑妯℃澘浠ョ鍚堥渶瑕併?paster create --list-templates"鍙互鏌ョ湅褰撳墠鍙敤鐨勬ā鏉褲?br />
鍋囧畾鎴戜滑鏂板緩鐨凱ylons欏圭洰鍚嶇О涓篘ewApp錛岄偅涔堟墽琛?paster create -t pylons NewApp"鍚庯紝鎴戜滑灝嗗緱鍒頒竴涓柊鐨凬ewApp鐩綍錛屽叾涓寘鍚竴涓猟ocs鐩綍(鏂囨。)銆佷竴涓猲ewapp鐩綍(浠g爜)銆佷竴涓狽ewApp.egg-info鐩綍(鍏冩暟鎹?鍜屼竴浜涢《綰ч厤緗枃浠躲?br />
鍦ㄥ紑鍙戣繃紼嬩腑錛屾垜浠粡甯鎬細鐢ㄥ埌鐨勬槸浠g爜鐩綍(榪欓噷鏄痭ewapp)鍜屼綅浜庨」鐩牴鐩綍涓嬬殑development.ini鍜宼est.ini鏂囦歡浜嗐傛敞鎰忚繖閲宯ewapp鐨勫ぇ灝忓啓錛孭ylons鍦ㄧ敓鎴愰」鐩殑鏃跺欙紝涓嶈浣犳寚瀹氱殑欏圭洰鍚嶇О澶у皬鍐欐槸鎬庢牱錛岃繖閲屼細鑷姩.lower()杞皬鍐欙紝鍙湁欏圭洰欏剁駭璺緞鍜宔gg淇℃伅浼氫繚鐣欏師濮嬪ぇ灝忓啓錛岀瑪鑰呰涓鴻繖鏇村姞絎﹀悎Web搴旂敤鐨刵ature銆?br />
浠g爜鐩綍涓嬪寘鎷琧onfig銆乧ontrollers銆乴ib銆乵odel銆乸ublic銆乼emplates鍜宼ests瀛愮洰褰曪紝鍒嗗埆鐢ㄤ簬瀛樻斁閰嶇疆(濡傜幆澧冦佷腑闂翠歡銆佽礬寰勬煡鎵鵑昏緫)銆佹帶鍒跺櫒(澶勭悊璇鋒眰)銆佸叏灞杈呭姪浠g爜(鍏ㄥ眬鍙橀噺銆乭elpers絳?銆佹ā鍨?鍚庡彴鏁版嵁璁塊棶)銆侀潤鎬侀〉闈?濯掍綋鏂囦歡銆侀〉闈㈡ā鏉垮拰嫻嬭瘯浠g爜銆?br />
鏈鍚庤璇磇ni鏂囦歡錛氶粯璁ょ敓鎴愮殑development.ini鍜宼est.ini欏懼悕鎬濅箟鍒嗗埆瀵瑰簲寮鍙戝拰嫻嬭瘯闇瑕佺殑鍩烘湰閰嶇疆錛屾垜浠彲浠ラ氳繃淇敼鐩稿簲鐨勫弬鏁伴厤緗潵鎸囧畾鍏蜂綋璁懼畾錛屽鏈嶅姟鍣↖P鍜岀鍙c佹暟鎹簱榪炴帴銆佹棩蹇楃瓑銆傜湅鍒拌繖閲屼綘涔熻浼氶棶錛岄偅涔堜駭鍝佺幆澧冨憿錛熺瓟妗堟槸榛樿娌℃湁鐢熸垚錛屼綘鍙互浠巇evelopment.ini淇敼鎴愰渶瑕佺殑浜у搧鐜閰嶇疆錛屼篃鍙互閫氳繃paster make-config newapp production.ini鐢熸垚涓涓粯璁ょ殑浜у搧鐜鍏稿瀷閰嶇疆銆?br />
浠evelopment.ini涓轟緥錛孭ylons鐨刬ni鏂囦歡涓昏鍖呮嫭4涓儴鍒嗙殑鍐呭錛?br />
1- 鍏ㄥ眬榛樿鍙傛暟錛屽
[DEFAULT]
debug聽
=聽true
#聽Uncomment聽and聽replace聽with聽the聽address聽which聽should聽receive聽any聽error聽reports
#email_to聽
=聽you@yourdomain.com
smtp_server聽
=聽localhost
error_email_from聽
=聽paste@localhost



2- 鏈嶅姟鍣ㄩ厤緗紝濡?br />
[server:main]
use聽
=聽egg:Paste#http
host聽
=127.0.0.1
port聽
=5000



3- 搴旂敤紼嬪簭閰嶇疆錛屽
[app:main]
use聽
=聽egg:NewApp
full_stack聽
=聽true

cache_dir聽
=聽%(here)s/data
beaker.session.key聽
=聽newapp
beaker.session.secret聽
=聽somesecret

#聽If聽you'd聽like聽to聽fine-tune聽the聽individual聽locations聽of聽the聽cache聽data聽dirs
#聽for聽the聽Cache聽data
,聽or聽the聽Session聽saves,聽un-comment聽the聽desired聽settings
#聽here:
#beaker.cache.data_dir聽
=聽%(here)s/data/cache
#beaker.session.data_dir聽
=聽%(here)s/data/sessions

#聽SQLAlchemy聽database聽URL
sqlalchemy.url聽
=聽sqlite:///%(here)s/development.db

#聽WARNING:聽*THE聽LINE聽BELOW聽MUST聽BE聽UNCOMMENTED聽ON聽A聽PRODUCTION聽ENVIRONMENT*
#聽Debug聽mode聽will聽enable聽the聽interactive聽debugging聽tool
,聽allowing聽ANYONE聽to
#聽execute聽malicious聽code聽after聽an聽exception聽is聽raised.
#set聽debug聽
=聽false
綆鍗曡鏄庝竴涓嬶紝榪欓噷鐨刦ull_stack璁劇疆涓簍rue琛ㄧず鎵撳紑浜や簰寮忚皟璇曞拰閿欒鎶ュ憡絳夊姛鑳斤紝"%(here)s"浼氳鏇挎崲鎴愰」鐩墍鍦ㄨ礬寰勶紝綾諱技鐩稿璺緞url涓殑"."杞粷瀵硅礬寰勶紝鑰宐eaker.*涓洪厤緗細璇濈浉鍏崇殑璁懼畾錛屽緙撳瓨銆乧ookie鍩烘湰鍐呭絳夈傚浜庝駭鍝佺幆澧冩潵璇達紝姣旇緝閲嶈鐨勪竴涓厤緗槸"set debug=false"錛屽惁鍒欎竴鏃﹀嚭鐜板紓甯革紝浜や簰寮忚皟璇曞皢浣垮緱鏀誨嚮鑰呰兘澶熸墽琛岀郴緇熷懡浠ゃ?br />
4- 鏃ュ織錛屽
[loggers]
keys聽
=聽root,聽routes,聽newapp,聽sqlalchemy

[handlers]
keys聽
=聽console

[formatters]
keys聽
=聽generic

[logger_root]
level聽
=聽INFO
handlers聽
=聽console

[logger_routes]
level聽
=聽INFO
handlers聽
=
qualname聽
=聽routes.middleware
#聽
"level聽=聽DEBUG"聽logs聽the聽route聽matched聽and聽routing聽variables.

[logger_newapp]
level聽
=聽DEBUG
handlers聽
=
qualname聽
=聽newapp

[logger_sqlalchemy]
level聽
=聽INFO
handlers聽
=
qualname聽
=聽sqlalchemy.engine
#聽
"level聽=聽INFO"聽logs聽SQL聽queries.
#聽
"level聽=聽DEBUG"聽logs聽SQL聽queries聽and聽results.
#聽
"level聽=聽WARN"聽logs聽neither.聽聽(Recommended聽for聽production聽systems.)

[handler_console]
class聽
=聽StreamHandler
args聽
=聽(sys.stderr,)
level聽
=聽NOTSET
formatter聽
=聽generic

[formatter_generic]
format聽
=聽%(asctime)s,%(msecs)03d聽%(levelname)-5.5s聽[%(name)s]聽%(message)s
datefmt聽
=聽%H:%M:%S

OK錛岃繖涓綃囧氨鍏堣鍒拌繖鍎匡紝涓嬩竴綃囧皢浠嬬粛Routes鍜宑ontroller銆?br />



laogao 2009-01-26 12:33 鍙戣〃璇勮
]]>
[Pylons] 綆浠?瀹夎鎸囧崡http://m.tkk7.com/sean/archive/2009/01/25/252561.htmllaogaolaogaoSun, 25 Jan 2009 12:05:00 GMThttp://m.tkk7.com/sean/archive/2009/01/25/252561.htmlhttp://m.tkk7.com/sean/comments/252561.htmlhttp://m.tkk7.com/sean/archive/2009/01/25/252561.html#Feedback1http://m.tkk7.com/sean/comments/commentRss/252561.htmlhttp://m.tkk7.com/sean/services/trackbacks/252561.htmlPylons鏄竴涓狿ython璇█鐨刉eb搴旂敤紼嬪簭妗嗘灦錛屽鏋滀綘綆鍗曚簡瑙h繃Ruby on Rails鍜孌jango錛屼綘澶ф浼氶棶錛孭ylons鏈変粈涔堜笉涓鏍峰憿錛烶ylons鏈澶х殑鐗圭偣鏄ā鍧楀寲錛屽皢澶勭悊Web搴旂敤鐜涓嬩笉鍚岄鍩熴佷笉鍚岄棶棰樼殑杞歡鍖呴泦鎴愬湪涓璧鳳紝褰㈡垚涓涓暣浣擄紝鍦ㄦ彁渚涗竴鎻藉瓙瑙e喅鏂規鐨勫悓鏃訛紝涓嶉樆紕嶄綘閫夋嫨鍒殑鏇夸唬緇勪歡銆傚彟澶栵紝Pylons鏄洰鍓嶅WSGI鏍囧噯鏀寔鏈濂界殑妗嗘灦涔嬩竴錛屾湭鏉ョ殑TurboGears 2.0涔熶細鍩轟簬Pylons鏋勫緩銆?br />
Pylons浠嶳uby on Rails鍊熼壌浜嗕笉灝戜笢瑗匡紝姣斿Routes錛屾瘮濡俉ebHelpers錛屼粠琛ㄩ潰鐪嬫洿鍍忔槸Python鐗堢殑RoR錛屼笉榪囧簳涓嬬殑鏋舵瀯搴旇璇存洿鍔犺交閲忓拰鐏墊椿錛屽洜涓轟綘鍙互鐏墊椿閫夋嫨鑷繁鐔熸倝鎴栬呮洿璐村拰鍏蜂綋搴旂敤瀹為檯鐨勭粍浠訛紝浠嶰RM鍒伴〉闈㈡ā鏉匡紝Pylons鍙槸鎺ㄨ崘涓浜涘ぇ瀹舵櫘閬嶆瘮杈冭鍙殑閫夐」錛屼絾騫朵笉寮哄埗浣犱嬌鐢ㄥ畠浠?br />
璇村畬鍜孯uby on Rails鐨勫紓鍚岋紝褰撶劧涔熻鍥炶繃澶存潵璇磋鍚屾牱鏄疨ython緙栧啓鐨凞jango銆傚鏋滀綘鍙槸鎯寵繀閫熺殑鏋勫緩涓涓彲浠ユ敮鎾戝ぇ閲忚闂殑Web搴旂敤錛孌jango鏄釜涓嶉敊鐨勯夋嫨錛屼絾鍜孯oR涓鏍鳳紝浣犲湪寰堝ぇ紼嬪害涓婅闄愬埗鍦ㄤ竴瀹氱殑pattern涓細濡傛灉浣犳寜鐓jango鐨勬濊礬鍘誨疄鐜頒綘鐨勫簲鐢紝浣犱細寰坔appy錛涗絾涓鏃︿綘瑙夊緱鏌愪釜緇勪歡浣犱笉鍠滄銆佷笉絎﹀悎鏌愪釜瀹為檯瑕佹眰錛屾兂瑕佹潵鐐瑰畾鍒訛紝浣犲氨浼氳寰楁湁浜涗幾涓嶅紑鎷寵剼錛屾垨鑰呭伐紼嬫旦澶с傜洰鍓嶆劅瑙塂jango姣旇緝涓嶇埥鐨勫湴鏂規湁錛氶〉闈㈡ā鏉胯緝寮憋紝琛ㄧ幇鍔涙湁浜涗笉瓚籌紝涔熸湁浜鴻澶熺敤浜嗭紱ORM鐩墠鏄嚜宸辯殑涓濂楋紝鏆傛椂娌℃湁鎴愮啛鐨凷QLAlchemy鏀寔錛岄渶瑕佺涓夋柟鍖呮垨鑰呰嚜宸卞仛錛涗粠鏋舵瀯涓婏紝Django瀵筂VC鐨勮В璇繪槸MTV(Model-Template-View)錛屽ぇ瀹墮兘鍙綔controller鐨勪笢涓滐紝鍦―jango鐨勪笘鐣岄噷鏄痸iew錛屼互鑷充簬姣忔鍜屽埆浜鴻В閲婏紝閮借澶氳垂涓鐣彛鑸屻?br />
Pylons鐩墠鐗堟湰鏄?.9.7(rc4)錛屼富瑕佺敤鍒扮殑絎笁鏂?鐙珛緇勪歡鏈塒aste銆丷outes銆丅eaker銆丮ako銆丗ormEncode銆乄ebHelpers鍜孲QLAlchemy銆傚畨瑁呮柟娉曞涓嬶細

棣栧厛浣犲繀欏繪湁Python(2.3+)錛岀劧鍚庝綘鍙互閫夋嫨鐩存帴easy_install Pylons鎴栬呮柊寤轟竴涓猇irtual Environment錛屽拰緋葷粺涓殑Python鐜闅旂寮錛屼緷璧栫殑鍖呭彲浠ョ嫭绔嬪崌綰с傝繖閲屾垜浠寜鐓у悗涓縐嶆柟寮忥紝濡傛灉浣犳槸絎竴嬈′嬌鐢≒ylons錛屽緩璁綘涔熷湪鐙珛Python virtualenv涓畨瑁呫?br />
1- easy_install virtualenv (榪欏皢瀹夎Python铏氭嫙鐜宸ュ叿)
2- python virtualenv.py ENV (鍒涘緩鏂扮殑铏氭嫙鐜銆傝繖閲岀殑ENV鏄綘鏂板緩铏氭嫙鐜鐨勮礬寰勶紝濡?mydevenv")
3- source ENV/bin/activate (嬋媧昏櫄鎷熺幆澧冦傚鏋滄槸Windows鐨勮瘽錛岃繖閲岄渶瑕佹墽琛孍NV\bin\activate.bat)
4- easy_install Pylons (榪欓噷浣跨敤鐨勬槸铏氭嫙鐜鐨別asy_install瀹夎)

濡傛灉浣犺寰椾笂闈㈢殑姝ラ楹葷儲錛孭ylons寮鍙戝洟闃熸彁渚涗簡涓涓剼鏈潵澶勭悊瀹夎榪囩▼錛屼笅杞藉悗鐢≒ython鎵ц鍗沖彲錛?br />http://www.pylonshq.com/download/0.9.7/go-pylons.py

濡傛灉闇瑕丼QLAlchemy錛屽垯鍐嶆墽琛屼竴涓?br />easy_install SQLAlchemy

瀹夎鎴愬姛鍚庯紝閫氳繃
paster create -t pylons [搴旂敤鍚峕
鍗沖彲鏂板緩Web搴旂敤涓繪鏋訛紝鐒跺悗cd鍒板簲鐢ㄤ笅錛岄氳繃
paster serve --reload development.ini
鍚姩Web鏈嶅姟錛岄粯璁ゅ湴鍧鍦?br />http://127.0.0.1:5000/

鏇磋緇嗙殑淇℃伅錛屽彲鍙傝働ylons欏圭洰涓婚〉錛?br />http://pylonshq.com/

闅忕潃浣跨敤鐨勬繁鍏ワ紝絎旇呰繕浼氶檰緇Pylons鍜屽叾浠栫浉鍏崇粍浠惰繘琛岃繘涓姝ョ殑浠嬬粛銆傜鍚勪綅鍐滃巻鏂板勾蹇箰錛?br />



laogao 2009-01-25 20:05 鍙戣〃璇勮
]]>
[澶囧繕] 濡備綍紜畾褰撳墠Python鐜鐨剆ite-packages鐩綍http://m.tkk7.com/sean/archive/2009/01/23/252479.htmllaogaolaogaoFri, 23 Jan 2009 11:25:00 GMThttp://m.tkk7.com/sean/archive/2009/01/23/252479.htmlhttp://m.tkk7.com/sean/comments/252479.htmlhttp://m.tkk7.com/sean/archive/2009/01/23/252479.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/252479.htmlhttp://m.tkk7.com/sean/services/trackbacks/252479.html鏈夋椂鎴戜滑闇瑕佸姩鎬佺殑紜畾褰撳墠閲囩敤鐨凱ython榪愯鏃剁幆澧冨搴旂殑site-packages鐩綍錛屽湪Python浠g爜涓紝鍙互榪欐牱鍋氾細

from聽distutils.sysconfig聽import聽get_python_lib
print聽get_python_lib()

澶囧繕銆?br />


laogao 2009-01-23 19:25 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产精品免费一区二区三区四区| 亚洲黄色免费网站| 亚洲高清在线观看| 免费av欧美国产在钱| 国产成人亚洲综合无| 亚洲精品二区国产综合野狼| 69av免费视频| 思思久久99热免费精品6| 亚洲国产精品久久久久婷婷老年| 拨牐拨牐x8免费| 中文字幕高清免费不卡视频| 亚洲av无码片在线观看| 精品国产亚洲男女在线线电影 | 亚洲成a人片在线不卡| 免费少妇a级毛片| 69av免费观看| 国产成人无码免费网站| 亚洲AV无码专区在线亚| 亚洲日韩一页精品发布| 国产高清在线精品免费软件| 日韩人妻无码精品久久免费一| 国产精品亚洲专区无码不卡| 亚洲色图国产精品| 亚洲人成电影在线播放| 性感美女视频免费网站午夜| 中文字幕无码免费久久| 真人无码作爱免费视频| 久久精品国产亚洲av麻豆图片 | 日韩精品无码区免费专区| 色播在线永久免费视频网站| 亚洲AV日韩综合一区| 亚洲精品一卡2卡3卡三卡四卡| 2048亚洲精品国产| 国产男女性潮高清免费网站| 2021国产精品成人免费视频| 性色午夜视频免费男人的天堂| 麻豆69堂免费视频| 亚洲欧洲无卡二区视頻| 亚洲一区中文字幕在线观看| 亚洲精品免费在线| 亚洲欧洲日韩国产综合在线二区|