van.pg.

PostgreSQL Ŭ·¯½ºÅ͸¦ Python Å×½ºÆ®±â±¸·Î ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î °ü¸®ÇÏ´Â µµ±¸
Áö±Ý ´Ù¿î·Îµå

van.pg. ¼øÀ§ ¹× ¿ä¾à

±¤°í

  • Rating:
  • ƯÇã:
  • BSD License
  • °Ô½ÃÀÚ À̸§:
  • Brian Sutherland
  • °Ô½ÃÀÚ À¥»çÀÌÆ®:
  • http://vanguardistas.net

van.pg. ű×


van.pg. ¼³¸í

PostgreSQL Ŭ·¯½ºÅ͸¦ Python Å×½ºÆ® Á¶¸í±â·Î ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î °ü¸®ÇÏ´Â µµ±¸ van.pg´Â À¯´Ö Å×½ºÆ®¸¦À§ÇÑ PostgreSQL µ¥ÀÌÅͺ£À̽º (¹× Ŭ·¯½ºÅÍ)¸¦ ½±°Ô ¸¸µé ¼öÀÖ´Â ÆÄÀ̽㠸ðµâÀÔ´Ï´Ù. Dibstestestest µ¥ÀÌÅͺ£À̽º´Â ¸¸µé±â±îÁö ¿À·¡ °É¸³´Ï´Ù. ÀϹÝÀûÀ¸·Î Å×½ºÆ® µ¥ÀÌÅͺ£À̽º Á¶¸í±â¸¦ »èÁ¦ / ´Ù½Ã ÀÛ¼ºÇϱâ·Î °áÁ¤ÇÒ ¶§Á¶Â÷ Á¶½ÉÇؾßÇÕ´Ï´Ù. ¶ÇÇÑ µ¥ÀÌÅͺ£À̽º°¡ Ä¿¹ÔµÇ¾ú°Å³ª NOT¿¡ Àû¿ëµÇ´ÂÁö ¿©ºÎ¸¦ ¾Ë¾Æ³»´Â PostgreSQL¿¡¼­ °­°ÇÇÑ ¹æ¹ýÀÌ ¾Æ´Õ´Ï´Ù. ¼±Åà »çÇ×À» ¼±ÅÃÇÏÁö¸¸ µ¥ÀÌÅͺ£À̽º°¡ ´õ·¯¿öÁö¸é ¾Ë¸®·Á¸é Ã¥ÀÓÀ» µÎ½Ê½Ã¿À. ÀÌ°ÍÀÌ ¿Ã¹Ù¸£°Ô ¼öÇàµÇÁö ¾ÊÀ¸¸é Å×½ºÆ® °Ý¸®°¡ ¼Õ»óµË´Ï´Ù. ÀÌ»óÀûÀÌÁö´Â ¾ÊÁö¸¸ ¿ì¸®°¡ ÇÒ ¼öÀÖ´Â ÃÖ¼±ÀÇ °ÍÀÔ´Ï´Ù. ¿¹¿Ü´Â Æ®·£Àè¼Ç ÆÐÅ°Áö (http://pypi.python.org/pypi/transaction)¸¦ ÀÏ°üµÇ°Ô »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º Ä¿¹ÔÀ» °ü¸®ÇÏ´Â °æ¿ìÀÔ´Ï´Ù. ÀÌ °æ¿ì Æ®·£Àè¼ÇÀÌ Ä¿¹Ô µÉ ¶§¸¶´Ù ¸®¼Ò½º¸¦ ¿äûÇÒ ¼ö ÀÖ½À´Ï´Ù. TestResourcesthe¿ÍÀÇ ÅëÇÕÀÌ ÀÌ·¯ÇÑ Á¶¸í±â¸¦ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ýÀº TestResources (http://pypi.python.org/pypi/testresources/)¸¦ ÅëÇØ À̾îÁý´Ï´Ù. >>> testResources °¡Á® ¿À±â ResourceDtestCase >>> van.pg °¡Á® ¿À±â DatabaseManager >>> °¡Á® ¿À±â psycopg2 >>> °¡Á® ¿À±â init_db (dB) : ... conn = psycopg2.connect (host = db.host, database = db.database) .. . cur = conn.cursor () ... cur.execute ( "Ç¥ Á¤¼ö);") ... conn.commit () ... conn.close () >>> class mytest (resourceststestcase) : ... ... Resources = ... # ÁÖ : ¿¬°áÀ» ´Ý¾Æ¾ßÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º »èÁ¦°¡ ½ÇÆÐ ... conn.close () ... self.db.dirtied () # ¿ì¸®´Â DB¸¦ º¯°æÇϹǷΠÅ×½ºÆ®¸¦ ´Ù½Ã Âø¼öÇؾßÇÕ´Ï´Ù. >>> unittest °¡Á® ¿À±â TextTestrunner >>> °¡Á® ¿À±â sys >>> runner = texttestrunner ( stream = sys.stdout) >>> runner.run (myTest ()) # doctest : + ellipsis. ... OK ... ÅÛÇø´ µ¥ÀÌÅͺ£À̽º »ç¿ë µ¿ÀÏÇÑ µ¥ÀÌÅͺ£À̽º¸¦ ¿©·¯ ¹ø ´Ù½Ã ÀÛ¼º ÇؾßÇÏ´Â °æ¿ì PostgreSQLÀÌ ÅÛÇø®Æ® µ¥ÀÌÅͺ£À̽º¿¡¼­ µ¥ÀÌÅͺ£À̽º¸¦ º¹»ç ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇϳªÀÇ DatabaseManager°¡ ´Ù¸¥ DatabaseManager°¡ ´Ù¸¥ DataBaseManager (initialize_sql = init_db) >>> Ŭ·¡½º Class MyTest2 (myTest) : ... Resources = >>> runner.run (myTest2 ()) # doctost : + ellipsis. ... OK ... Transaction Integration Å°¿öµå argumen dirty_on_commitÀº trueÀ̸ç, DatabaseManager´Â Æ®·£Àè¼Ç ¸ðµâÀ» ÅëÇØ ¼öÇà µÈ ¸ðµç ¼º°øÀûÀÎ Commit ÀÌÈÄ¿¡ µ¥ÀÌÅͺ£À̽º¸¦ ´õ ¸ÕÁö·Î Ç¥½ÃÇÕ´Ï´Ù. Áï, µ¥ÀÌÅͺ£À̽º°¡ ¼öµ¿À¸·Î ÅëÁö ÇÒ ÇÊ¿ä°¡¾ø´Â °¢ Å×½ºÆ®¸¦ ÀǹÌÇÕ´Ï´Ù. >>> Man = Daty_ON_COMMIT = TRUEÀÌ ±â´ÉÀ» »ç¿ëÇϸé Æ®·£Àè¼Ç (http://pypi.python.org/pypi/transaction) ÆÐÅ°Áö¸¦ Á÷Á¢ (http://pypi.python.org/pypi/transaction) ÆÐÅ°Áö¿¡ ÀÇÁ¸ÇؾßÇÕ´Ï´Ù. ±âÁ¸ DatabaseBy ±âº»°ª ÀÎ Van. PG´Â Àӽà µð·ºÅ丮¿¡ »õ PostgreSQL Ŭ·¯½ºÅ͸¦ »ý¼ºÇÏ°í PostgreSQL µ¥¸óÀ» ½ÃÀÛÇÕ´Ï´Ù. ÀÌ°ÍÀº ´ëºÎºÐÀÇ ½Ã°£ µ¿¾È ÀÛµ¿ÇÏÁö¸¸ ¸Å¿ì ºü¸£Áö ¾Ê½À´Ï´Ù. ÀÌ¹Ì ½ÇÇàÁßÀÎ PostgreSQL Ŭ·¯½ºÅÍ°¡ ÀÖÀ¸¸é VAN.PG°¡ ȯ°æ º¯¼ö VAN_PG_HOST¸¦ ¼³Á¤ÇÏ¿© »ç¿ëÇϵµ·Ï ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, / tmp / pgcluster¿¡¼­ ¼ÒÄÏÀÌÀÖ´Â ·ÎÄà PostgreSQL ¼­¹ö¿¡ ´ëÇÑ van.pgÀÇ Å×½ºÆ®¸¦ ½ÇÇàÇÏ·Á¸é van_pg_host = / tmp / pgcluster python setup.py TestWarning : ´ë»ó µ¥ÀÌÅͺ£À̽º¿¡¼­ test_db·Î ½ÃÀÛÇÏ´Â µ¥ÀÌÅͺ£À̽º°¡ »èÁ¦ µÉ °ÍÀÔ´Ï´Ù ¿¬°á Å×½ºÆ®°¡ ¿Ï·áµÇ¸é µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ¸ðµç ¿¬°áÀ» ¿Ã¹Ù¸£°Ô ´ÝÀ¸·Á¸é ¿¬°áÀÌ ÇÊ¿äÇÕ´Ï´Ù. PostgreSQLÀº ¿­·ÁÀÖ´Â ¿¬°áÀÌÀÖ´Â µ¿¾È µ¥ÀÌÅͺ£À̽º¸¦ »èÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·¸°ÔÇϸé Å×½ºÆ® µ¥ÀÌÅͺ£À̽º¸¦ »èÁ¦ÇÏ·Á°í ÇÒ ¶§ van.pg°¡ ¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù. Ŭ·¯½ºÅÍ Æ¼ºê¸¦ ´õ ³·Àº ¼öÁØÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î ÀÚ½ÅÀÇ PostgreSQL Ŭ·¯½ºÅ͸¦ Á¶ÀÛ ÇÒ ¼ö ÀÖ½À´Ï´Ù. cluster = cluster () >>> Àӽà µð·ºÅ丮¿¡ µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µå´Â cluster.initdb () >>> °¡Á® ¿À±â >>> dbdir = cluster.dbdir >>> 'pg_version'os.listdir (dbdir) truestart it : >>> cluster.start () µ¥ÀÌÅͺ£À̽º »ý¼º / Å×½ºÆ® : >>> dbname = cluster.createdb () ¿ì¸®´Â µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. >>> import psycopg2 >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir) >>> cur = conn.Cursor () µ¥ÀÌÅͺ£À̽º¸¦ Æ®À§Å·ÇÏ¿© ±âº» »çÇ×À» ¼öÇà ÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ. >>> cur.execute ( "Å×À̺í x (y int)") >>> cur. ½ÇÇà ( "X °ªÀ¸·Î »ðÀÔ") >>> CONCOMMIT () >>> CUR.EXECUTE ( "X¿¡¼­ X"¼±ÅÃ) >>> CUR.FETCHALL () 1 Ŭ·¯½ºÅÍ µ¥¸ó : >>> conn.Close () >>> cluster.stop () ±×°ÍÀ» ´Ù½Ã ½ÃÀÛÇϽʽÿÀ : >>> cluster.start () >>> conn = psycopg2.connect (µ¥ÀÌÅͺ£À̽º = dbname, host = cluster.dbdir) >>> cur = conn.cursor () >>> cur.execute ( "¼±Åà * x") >>> cur.fetchAll () 1 ¹× Á¤¸® : >>> conn.close () >>> cluster.cleanup () >>> cluster.dbdirÀº none true >>> os.path.exists (dbdir) falsedevelopmentdevelopment°¡ GitHub¿¡¼­ ¹ß»ýÇÕ´Ï´Ù : http://github.com/ jinty / van.pg ¿ä±¸ »çÇ× : ¡¤ ÆÄÀ̽ã


van.pg. °ü·Ã ¼ÒÇÁÆ®¿þ¾î

ftfy.

»ç½Ç ÀÌÈÄ¿¡ À¯´Ï ÄÚµå ÅؽºÆ®·Î ¸î °¡Áö ¹®Á¦¸¦ ÇØ°áÇÕ´Ï´Ù. ...

109

´Ù¿î·Îµå