<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[运维进行时]]></title> 
<link>https://blog.liuts.com/index.php</link> 
<description><![CDATA[互联网运维与架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[运维进行时]]></copyright>
<item>
<link>https://blog.liuts.com/post//</link>
<title><![CDATA[一个Django与SQLAlchemy的小项目]]></title> 
<author>root &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Python]]></category>
<pubDate>Sat, 22 Sep 2007 07:36:58 +0000</pubDate> 
<guid>https://blog.liuts.com/post//</guid> 
<description>
<![CDATA[ 
	<strong>dbconfig.py</strong><br/><textarea name="code" class="python" rows="15" cols="100">
# -*- coding: utf-8 -*-
from django.conf import settings
import sqlalchemy
from sqlalchemy.engine.url import URL
__all__ = ['metadata']
def create_engine():
&nbsp;&nbsp;&nbsp;&nbsp;url = URL(drivername=settings.DATABASE_ENGINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database=settings.DATABASE_NAME,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username=settings.DATABASE_USER,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password=settings.DATABASE_PASSWORD,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host=settings.DATABASE_HOST,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port=settings.DATABASE_PORT or None,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query = getattr(settings, 'DATABASE_OPTIONS', &#123;&#125;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;options = getattr(settings, 'SQLALCHEMY_OPTIONS', &#123;&#125;)
&nbsp;&nbsp;&nbsp;&nbsp;engine = sqlalchemy.create_engine(url, **options)
&nbsp;&nbsp;&nbsp;&nbsp;return engine
metadata = sqlalchemy.MetaData(create_engine())
</textarea><br/><strong>urls.py</strong><br/><textarea name="code" class="python" rows="15" cols="100">
from django.conf.urls.defaults import *
urlpatterns = patterns('servperf.serlist.views',
&nbsp;&nbsp;&nbsp;&nbsp;(r'^list/(?P<list_type>(&#92;d&#124;&#92;.)&#123;10,15&#125;)?$', 'Readlist'),
&nbsp;&nbsp;&nbsp;&nbsp;(r'^list/?$', 'Readlist',&#123;'list_type': 'listall'&#125;),
&nbsp;&nbsp;&nbsp;&nbsp;(r'^diskio/?$', 'Readlist', &#123;'list_type': 'diskio_data'&#125;),
&nbsp;&nbsp;&nbsp;&nbsp;(r'^diskspace/$', 'Readlist', &#123;'list_type': 'diskspace_data'&#125;),
&nbsp;&nbsp;&nbsp;&nbsp;(r'^loadavg/$', 'Readlist', &#123;'list_type': 'loadavg_data'&#125;),
&nbsp;&nbsp;&nbsp;&nbsp;(r'^mem/$', 'Readlist', &#123;'list_type': 'mem_data'&#125;),
&nbsp;&nbsp;&nbsp;&nbsp;(r'^net/$', 'Readlist', &#123;'list_type':'net_data'&#125;),
&nbsp;&nbsp;&nbsp;&nbsp;# Uncomment this for admin:, &#123;'list_type': 'net'&#125;
&nbsp;&nbsp;&nbsp;&nbsp;(r'^admin/', include('django.contrib.admin.urls')),
)
</textarea><br/><strong>models.py</strong><br/><textarea name="code" class="python" rows="15" cols="100">
# Create your models here.
from sqlalchemy import *
from servperf.dbconfig import metadata
diskio_data = Table('diskio_data', metadata,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Column('ID', Integer, primary_key=True),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Column('LAN', char(15), nullable=False),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Column('WAN', char(15), nullable=False),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Column('CONTENTS', varchar(225), nullable=False),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Column('DATETIME', datetime, nullable=False),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_engine='InnoDB'
</textarea><br/><strong>views.py</strong><br/><textarea name="code" class="python" rows="15" cols="100">
#coding=utf-8
# Create your views here.
from sqlalchemy import *
from sqlalchemy.sql import and_
from servperf.dbconfig import metadata
from servperf.serlist.models import diskio_data,loadavg_data,diskspace_data,mem_data,net_data
from django.shortcuts import render_to_response
def Readlist(request,list_type="listall"):
&nbsp;&nbsp;&nbsp;&nbsp;pagesize = 6
&nbsp;&nbsp;&nbsp;&nbsp;page = request.GET.get('page', None)
&nbsp;&nbsp;&nbsp;&nbsp;_sqlc=[]
&nbsp;&nbsp;&nbsp;&nbsp;_sqllist=[diskio_data.c.DATETIME==diskspace_data.c.DATETIME &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.DATETIME==loadavg_data.c.DATETIME &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.DATETIME==mem_data.c.DATETIME &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.DATETIME==net_data.c.DATETIME &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.WAN==diskspace_data.c.WAN &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.WAN==loadavg_data.c.WAN &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.WAN==mem_data.c.WAN &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,diskio_data.c.WAN==net_data.c.WAN &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]
&nbsp;&nbsp;&nbsp;&nbsp;if len(str(list_type))>10:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sqlc.append(diskio_data.c.WAN==list_type)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sqllist.append(diskio_data.c.WAN==list_type)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sqllist.append(diskspace_data.c.WAN==list_type)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sqllist.append(loadavg_data.c.WAN==list_type)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sqllist.append(mem_data.c.WAN==list_type)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sqllist.append(net_data.c.WAN==list_type)
&nbsp;&nbsp;&nbsp;&nbsp;_rscount= select([func.count(diskio_data.c.LAN)], and_(*_sqlc)).execute()
&nbsp;&nbsp;&nbsp;&nbsp;numrows = int(_rscount.fetchone()[0])
&nbsp;&nbsp;&nbsp;&nbsp;pages=numrows / pagesize
&nbsp;&nbsp;&nbsp;&nbsp;if numrows % pagesize:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages+=1
&nbsp;&nbsp;&nbsp;&nbsp;if page==None:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page=1
&nbsp;&nbsp;&nbsp;&nbsp;offset=pagesize*(int(page)-1)
&nbsp;&nbsp;&nbsp;&nbsp;previous=int(page)-1
&nbsp;&nbsp;&nbsp;&nbsp;next=int(page)+1
&nbsp;&nbsp;&nbsp;&nbsp;if next>pages:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next=pages
&nbsp;&nbsp;&nbsp;&nbsp;s= select([diskio_data.c.LAN,diskio_data.c.WAN,diskio_data.c.CONTENTS,loadavg_data.c.CONTENTS, &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diskspace_data.c.CONTENTS,mem_data.c.CONTENTS,net_data.c.CONTENTS,diskio_data.c.DATETIME], &#92;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and_( *_sqllist )).order_by(diskio_data.c.DATETIME.desc()).offset(offset).limit(pagesize)
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rs = s.execute()
&nbsp;&nbsp;&nbsp;&nbsp;row = rs.fetchall()
&nbsp;&nbsp;&nbsp;&nbsp;rs.close()
&nbsp;&nbsp;&nbsp;&nbsp;return render_to_response('serlist/serlist_list.html',&#123;'myrows':row,'page':page,'pages':pages,'previous':previous,'next':next,'numrows':numrows,'list_type':list_type&#125;)
</textarea><br/>Tags - <a href="https://blog.liuts.com/tags/django/" rel="tag">django</a> , <a href="https://blog.liuts.com/tags/sqlalchemy/" rel="tag">sqlalchemy</a>
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post//#blogcomment</link>
<title><![CDATA[[评论] 一个Django与SQLAlchemy的小项目]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://blog.liuts.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>