首页 > 代码库 > python如何用sqlalchemy操作数据库

python如何用sqlalchemy操作数据库

工具:mysql  python sqlalchemy

----------------------------------------

准备工作:

1.安装mysql

如果是window环境请参考 win7安装mysql

如果是linux环境请参考 --稍后补充

2.安装python

windows: win7安装python2和python3

linux: linux安装python36

linux python2.6.6以后的版本同样要通过源码包安装,看了下这位博主的这篇文章写的非常详细http://www.cnblogs.com/dudu/p/4294238.html

3.基于python安装第三方库sqlalchemy

直接用pip安装就行了

pip install sqlalchemy

pip3 install sqlalchemy

--------------------------------------------------------------------------

可以开始撸码了~~~~~~

我是基于python36写的,话不多说直接贴代码吧

第一步:创建数据库

技术分享

 

 

第二步:创建数据库连接

# encoding:utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, INTEGER, String
from sqlalchemy.orm import sessionmaker
HOST_NAME = 127.0.0.1     # 数据库所在服务器ip,因为我是本地数据库所以这里是127.0.0.1
HOST_PORT = 3306          # 数据库端口
DATABASE_NAME = pydb      # 数据库名
USER_NAME = root          # 链接数据的用户名
PWD = 123456              # 链接数据库的密码
# DB_URI是固定的格式,因为我的数据库是mysql,所以按照这个格式写就行了
DB_URI = mysql+pymysql://{0}:{1}@{2}:{3}/{4}?charset=utf8.format(USER_NAME,PWD,HOST_NAME,HOST_PORT,DATABASE_NAME)
# 创建数据库连接
engine = create_engine(DB_URI)

 

 第三步: 创建表

# -------------创建数据库--------------------------------------------------------------------------------
# 操作数据库的基类
Base = declarative_base(engine)


class User(Base):
    """定义类其实就是创建一个表
    create table user (
    id int primary key auto_increment,
    user_name varchar(50) not null,
    password varchar(20) default ‘123456‘
    );
    """
    __tablename__ = user  # 表名
    id = Column(INTEGER,primary_key=True, autoincrement=True)   # id字段,主键,自增
    user_name = Column(String(50), nullable=False)  # 用户名字段
    password = Column(String(20), nullable=False, default=123456) # 密码字段

    def __repr__(self):
        """定义数据库查询返回的数据格式"""
        return User(id="%s",username="%s",password="%s") % (self.id, self.user_name,self.password)


Base.metadata.create_all()

查看数据库,创建成功

技术分享

 第四步: 插入数据

 1 # ------------插入数据---------------------------------------------------------------------
 2 # 创建会话
 3 Session = sessionmaker(engine)
 4 session = Session()
 5 panda = User(user_name=panda, password=123456)
 6 # 插入单条数据
 7 session.add(panda)
 8 user_list = []
 9 # 插入多条数据
10 user_list.append(User(user_name=test1, password=11111111))
11 user_list.append(User(user_name=test2, password=22222222))
12 user_list.append(User(user_name=test3, password=33333333))
13 session.add_all(user_list)
14 session.commit()

查看数据库已经添加成功

技术分享

第五步:查询数据

# select top 1 from user;
res_first = session.query(User).first()
print(res_first)
# select *from user;
res_all = session.query(User).all()
print(res_all)
# select *from user where user_name=‘panda‘;
res_panda = session.query(User).filter_by(user_name=panda).all()
print(res_panda)
# select *from user where user_name=‘panda‘;
res = session.query(User).filter(User.user_name == panda).all()
print(res)

运行结果如下,这里返回的格式是以class类的__repr__方法定义的

技术分享

第六步: 更新数据

# update user set password = ‘654321‘ where user_name=‘panda‘;
res = session.query(User).filter(User.user_name == panda).all()[0]
res.password = 654321
session.commit()

查看数据库已经更新成功

技术分享

第七步: 删除数据

# delete from user where id=3;
res = session.query(User).filter_by(user_name=test3).all()[0]
session.delete(res)
session.commit()

查看数据库已经删除成功

技术分享

 

 

 

 

python如何用sqlalchemy操作数据库