您的位置:首页 > 数据库

sqlalchemy系列(1) sqlalclemy安装与基础搭建

2014-11-02 19:30 260 查看
sqlalchemy是python业内公认非常强大的数据库操作框架,下面我主要说明sqlalchemy在实际使用中的用法

首先是sqlalchemy的安装

可直接使用setuptools或者pip安装

easy_install SQLAlchemy
pip install SQLAlchemy


通过下面可检验sqlalchemy是否安装完成

In [1]: import sqlalchemy

In [2]: sqlalchemy.__version__
Out[2]: '0.9.7'


首先是创建数据库的引擎

使用create_engine函数创建与数据库的配置对象

engine = create_engine(
"mysql://%s:%s@%s/%s" % (
MYSQLCONFIG['user_name'], MYSQLCONFIG['user_pass'], MYSQLCONFIG['host'], MYSQLCONFIG['db_name'],),
encoding='utf8', convert_unicode=True)


以上是mysql的创建语句

其他数据库一般把前面的mysql改一下名字就可以了

有了连接数据的引擎,下面需要连接数据库,创建访问会话了

Session = sessionmaker(bind=engine)


sessionmaker实际上是一个工厂类,他可以产生Session的类对象,后面会使用这个Session创建数据库的会话

你可以选择在sessionmaker直接绑定数据库引擎。

如果有多个数据库,也可以这样发

Session = sessionmaker()
Session.configure(bind=engine)


我们在使用的时候,需要用上述的Session创建session,当然时候要关闭,不然会报连接池溢出,无法使用session

我使用tornado的时候一般习惯在一个父类Handler初始化时创建session,结束时关闭,这样可省去重复代码,而且不会出现忘记关闭

import tornado.web
from library.database import Session
class BaseHandler(tornado.web.RequestHandler):
def initialize(self):
self.orm = Session()

def on_finish(self):
self.orm.close()


说完了连接数据库部分,该聊聊配置与数据表的关系了

sqlalchemy使用mapper()对python对象与数据表之间进行映射,但我一般更加喜欢直接用简便的方法

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Admin_group(Base):
__tablename__ = 'admin_group'

id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
create_time = Column(Integer, nullable=False)
limit = Column(String)

类似上述代码,继承Base,直接创建合适的python对象,会自动和数据库里面映射,另一种就是用mapper()进行创建,我们放到后面需要用到时说

CREATE TABLE `sqlalchemyTest`.`admin_group` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`create_time` INT NOT NULL,
`limit` VARCHAR(45) NULL,
PRIMARY KEY (`id`));


上述为在mysql中的创表sql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqlalchemy python orm