一、安装sqlalchemy
pip install sqlalchemy
通过python命令行工具导入模块未报错则说明安装成功
from sqlalchemy import *
from sqlalchemy.orm import *
二、使用sqlalchemy对数据库进行操作
1.定元信息,绑定到引擎
# python3.x连接mysql使用的是如下路径连接,若是Python2.x,则可通过
# engine = create_engine("mysql://username:password@localhost/database") 建立连接
engine = create_engine("mysql+pymysql://root:mysql@localhost/test")
metadata = MetaData(engine)
注意:若使用的是python3.x在此处会报No Module name pymysql,直接使用pip install pymysql安装即可
2.创建users数据表
# 创建表内容为:table_name为users,columns有id、name、email
user_table = Table('users',metadata,
Column('id',Integer,primary_key=True),
Column('name',String(40)),
Column('email',String(120)))
user_table.create()
3.实例化一个插入句柄,并插入一条数据
# 插入一条数据
i_obj= user_table.insert()
i_obj.execute({'name':'laowang','email':'laowang@qq.com'})
# 插入两条数据
i_obj.execute({'name':'lisi'},{'name':'zhangsan'})
4.使用ORM操作
使用ORM操作就是将Python的类与数据库的表映射,而不用直接写sql语句,创建映射关系:
# 定义一个User类
class User(object):
def __repr__(self):
return '%s(%r ,%r)' % (self.__class__.__name__,self.name,self.email)
# 使用mappr函数建立映射关系
mapper(User,user_table)
user = User()
user.name
print(user)
5.建立会话,这里以插入和查询为例
# 创建一个session,并与User类关联
session = create_session()
query = session.query(User)
# 查询name为langwang的用户
query.filter_by(name='laowang').first()
# 添加用户名为wanmgazi的用户
u1 = User()
u1.name = 'wangmazi'
session.add()
session.flush()
session.commit()
建立会话时使用sessionmaker效果会更好一点,还有其他诸如删除、事务等高级操作建议参考官方文档
6.以上代码的完整示例如下
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker, mapper
# 定义一个User类
class User(object):
def __repr__(self):
return '%s(%r ,%r)' % (self.__class__.__name__,self.name,self.email)
def init_db():
engine = create_engine("mysql+pymysql://root:mysql@localhost/test")
metadata = MetaData()
# 创建表内容为:table_name为users,columns有id、name、email
user_table = Table('users',metadata,
Column('id',Integer,primary_key=True),
Column('name',String(40)),
Column('email',String(120)))
metadata.create_all(engine)
mapper(User,user_table)
session = sessionmaker()
return session
class Database(object):
def __init__(self,session):
self.session = session
self.query = self.session.query(User)
def get_user(self,name):
return self.query.get(name)
def get_email(self,user_id):
user = self.get_user(id=user_id)
return user.email
def insert_info(self,name,email):
user = User(name,email)
self.session.add(user)
self.session.commit()
def delete_info(self,name):
user = self.get_user(name)
self.session.delete(user)
self.session.commit()
def get_count(self):
return self.query.count()
def get_all_user(self):
return self.query.all()
def modify_info(self,name,email):
self.query.filter(User.name==name).update({'email':email})
self.session.commit()
最后的完整代码没有整体运行过,若发现错误请及时指出,谢谢!!!