python使用sqlalchemy中间件对MYSQL数据库进行创建、查询、删除操作

首先安装sqlalchemy,安装方法有两种:通过官网下载源码进行安装;使用pip install sqlachemly

1.建立操作数据库接口模块api.py,

描述:

在接口模块中首先创建一个engine,这里关联的是mysql数据库,也可以是其他类型的数据库

然后定义了几个访问数据库的接口函数,提供对数据库的添加、删除、查询操作

from sqlalchemy import create_engine
from sqlalchemy import func
from sqlalchemy.pool import NullPool
from sqlalchemy.orm import sessionmaker

class API(object):
        def __init__(self):
	    args = 'mysql://root:root@localhost/myDB?charset=utf8'
	    kwds = NullPool
	    engine = create_engine(args,poolclass=kwds)
	    Session = sessionmaker(bind=engine)
	    self.session = Session()
	def create(self, db, **body):
	    self.session.add(db(**body))
	    return 'CREATED'
	def get_all_content(self, db):
	    result = list(t.__dict__ for t in self.session.query(db).all())
	    for i in xrange(0, len(result)
	        result.pop('_sa_instance_state', None)
	    return 'OK', result
	def delete_context(self, db, db_attr, value):
	    res = self.session.query(db).filter(db_attr == value).delete()
	    if res:
	        self.session.commit()
	        return 'OK'
	    else:
	        return False
	def delete_all(self, db):
	    self.session.query(db).delete()
	    self.session.commit()
	    return 'OK'

2.建立数据库访问存储、模型模块model.py,这里定义了一个名字叫test的表,其中包含三个字段id(自动增长),name,sex

from sqlalchemy import Column, Integer, String,schema
from sqlalchemy.ext.declarative import declarative_base
def table_args():
        return {
            'mysql_engine': 'InnoDB',
            'mysql_charset': 'utf8'
        }

Base = declarative_base()

class Test(Base):
        """defined a Test"""
	__tablename__ = 'test'
	__table_args__ = (
	    schema.UniqueConstraint('id', name = 'uniq_test_id'),
		table_args()
	)
	id = Column(Integer, primary_key=True,autoincrement='auto',nullable=False)
	name = Column(String(255), nullable=False)
	sex = Column(String(40), nullable=False)

3.访问数据库表记录的方法,建立应用模块application.py,在模块中分别导入model和api模块,实例化出一个api模块的对象,进行所有table内容的查询操作

from model import Test
import api
def query_all_in_test_table():
    db_api = api.API()
    rv, date = db_api.get_all_content(Test)
    print date




你可能感兴趣的:(MySql,python)