|

楼主 |
发表于 2010-2-5 15:04:47
|
显示全部楼层
DAY2(白费力,请跳过此篇)
SqlSoup:
写了一点代码后发现SQLAlchmey非常不习惯,必须手动填写代码创建数据结构,反正我是不大喜欢这种风格:
[PHP]
import sqlalchemy as sa
from sqlalchemy import orm
from myapp.model import meta
def init_model(engine):
"""Call me before using any of the tables or classes in the model"""
## Reflected tables must be defined and mapped here
#global reflected_table
#reflected_table = sa.Table("Reflected", meta.metadata, autoload=True,
# autoload_with=engine)
#orm.mapper(Reflected, reflected_table)
#
meta.Session.configure(bind=engine)
meta.engine = engine
#上面的废话pylons帮你建好了,见blog/model/meta.py
#这是一个叫Blog的ORM,对应数据库表是blog
t_blog = sa.Table('blog', meta.metadata,
sa.Column('blog_id', sa.types.Integer, primary_key=True),
sa.Column('catid', sa.types.Integer, index=True),
sa.Column('subject', sa.types.String(150)),
sa.Column('content', sa.types.Text),
sa.Column('addtime', sa.types.Integer(11)),
sa.Column('uptime', sa.types.Integer(11)),
sa.Column('view', sa.types.Integer(9)),
sa.Column('comments', sa.types.Integer(9)),
)
class Tblog(object):
pass
orm.mapper(Tblog, t_blog);
[/PHP]
参考文档: http://pylonshq.com/docs/en/0.9. ... les-and-orm-classes
大多数人还是喜欢先建好数据库的吧,不过SA还是提供了一个简单的插件,叫做SqlSoup,使用它就可以连接已经存在的数据库作为ORM了,SqlSoup同样也提供Session模式(非存储变量那个Session,主要是用作进程和控制的),不过一个不上集群的落单网站用不用也无所谓啦.另外和PHP的PDO类似,默认是不能同时保留两个Query Result的,这个要注意.
http://www.sqlalchemy.org/docs/05/reference/ext/sqlsoup.html
安装了SA以后SqlSoup就自带了.使用方法:
打开项目中的model/__init__.py文件,加上两行
[PHP]
from sqlalchemy.ext.sqlsoup import SqlSoup
db1 = SqlSoup('mysql://user:password@127.0.0.1:3306/database?charset=utf8')
[/PHP]
需要调用的地方只要调用
[PHP]
from blog(项目名称,这里是blog).model import db1
[/PHP]
就可以了,查询的时候就是db1.blog.all()就可以了,其他查询方法具体请参照官方文档
和nginx的集成:
正式用的时候肯定不会挂在5001端口下了,如果你已经装了别的应用比如PHP这样的,弄一个nginx做个反向代 理吧
debian下先安装nginx:
在/etc/nginx/conf.d目录下新建一个proxy.conf:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
编辑/etc/nginx/site-enabled/default,增加以下内容:
server {
listen 80;
#域名
server_name nbx.8800.org;
location / {
include /etc/nginx/conf.d/proxy.conf;
proxy_pass http://127.0.0.1:5000;
proxy_redirect default;
}
} |
|