Read Sean

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

          [Pylons] SQLAlchemy起步 - I. Engine API

          Posted on 2009-01-26 20:46 laogao 閱讀(2512) 評論(1)  編輯  收藏 所屬分類: On Python

          ORM是個大話題,大到可能好幾本書都說不完。SQLAlchemy,別看它剛出到0.5.2,已然是Python世界ORM的事實標準,受到眾多開發者和無數框架的青睞。

          如果之前沒有或很少接觸SQLAlchemy,那么學習Pylons可能有相當一部分時間都會花在SQLAlchemy上。通常,人們選擇Pylons或者TurboGears而不是Django,SQLAlchemy在這些決定的背后有著很重的分量。作為Pylons學習筆記的一部分,接下來我將分4篇隨筆介紹SQLAlchemy,分別是Engine API、Schema Management (MetaData/Types)、SQL Expression Language和Object Relational Mapper。此文為第1篇,重點介紹Engine API。

          類似Java的JDBC,Python也有一個類似的數據庫訪問接口規范,那就是DB-API(目前是2.0),不同的常見RDBMS都有符合DB-API標準的Python庫,比如PostgreSQL有psycopg2,Oracle有cx_Oracle等。有了這個基礎,SQLAlchemy也就得以方便的通過DB-API連接不同的數據庫。

          以PostgreSQL為例,通過SQLAlchemy的Engine API訪問數據庫的代碼可以這樣來寫:
          ?1?from?sqlalchemy.engine?import?create_engine
          ?2?
          ?3?engine?=?create_engine('postgres://user:pass@localhost/testdb')
          ?4?connection?=?engine.connect()
          ?5?connection.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?)
          15?connection.execute(
          16?????"""
          17?????INSERT?INTO?book?(title)?VALUES?(%s);
          18?????""",
          19?????"The?Art?of?UNIX?Programming"
          20?)
          21?rs?=?connection.execute("SELECT title FROM book")
          22?for?row?in?rs:
          23?????print?"Book?Title:?",?row['title']
          24?connection.close()

          基本步驟就是create_engine、connect、execute和close,沒有很特別的地方,不過SQLAlchemy的Engine API,并不是簡單的DBAPI調用,而是包裝了其他內容,如數據庫連接池,我們可以在create_engine的時候指定連接池參數和其他額外配置,類似這樣:
          engine?=?create_engine('postgres://user:pass@localhost/testdb',?pool_size=10, convert_unicode=True)

          類似Spring的JdbcTemplate,更多的時候,統一使用SQLAlchemy的Engine API而不是DB-API能給我們帶來更大的靈活性,通常也更方便、更安全。

          Feedback

          # re: [Pylons] SQLAlchemy起步 - I. Engine API[未登錄]  回復  更多評論   

          2011-02-27 14:26 by 小白
          謝謝了,
          主站蜘蛛池模板: 休宁县| 康马县| 红安县| 浦城县| 临清市| 辽源市| 衡阳县| 信丰县| 增城市| 珲春市| 海原县| 牟定县| 长春市| 宁陵县| 安义县| 黑河市| 营口市| 武夷山市| 河南省| 天等县| 秭归县| 庐江县| 普陀区| 桐梓县| 通榆县| 湾仔区| 定安县| 安平县| 白水县| 广丰县| 前郭尔| 阳东县| 丰原市| 浦城县| 天峨县| 巴青县| 左贡县| 迁西县| 垣曲县| 龙江县| 阜新市|