一、sqlalchemy概述与架构

1.SQLAlchemy

SQLAlchemy是Python编程语言下的一款开源软件。提供SQL包以及对象关联映射(ORM)工具,使用MIT许可证

SQLAlchemy采用简单的python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型

SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合,而对象集合的抽象又重要于表和行

SQLAlchemy目标是提供兼容众多数据库,如SQLite,Mysql,SQLServer,Oracal

安装数据库模块 pip3 install sqlalchemy

2.SQLAlchemy架构图

SQLAlchemy分为ORM(对象管理映射工具)和Core(核心模块),还有DBAPI数据库接口

Core分为Engine核心,SQl语句支持,Connection Pooling连接池

3.ORM模型

ORM即对象关系映射

数据库是一个二维表,包含多行多列,把一个表的内容用Pthon的数据结构表示的话,可以有一个列表list表示,list每一个元素都是tuple,表示一行记录

[

('1','c')

('2','b')

('3','c')

]

用列表表示一行很难看出表的结构。如果把一个列表用一个类来表示,就很容易看出结构

class User(object):

def __init__(self,id,name)

self.id=id

self.name=name

u=User(1,'libai')            #实例化对象

二、sqlalchemy连接数据库操作与定义映射关系类

1.连接mysql

通过create_engine实现数据库的链接

  1. #!/usr/bin/env python3
  2. from sqlalchemy import create_engine
  3. # 创建连接到数据库的引擎
  4. engine = create_engine(
  5. #指定数据库、用户名、密码、连接到哪台服务器、库名等信息
  6. 'mysql+pymysql://用户名:密码@localhost/库名?charset=utf8',
  7. encoding='utf8',
  8. echo=True    #终端输出
  9. )

2.声明映射--ORM表映射基类

当时用ORM的时候,配置过程从描述数据库表开始

通过自定义类映射相应的表

通过声明系统实现类的映射,定义基类

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

3.创建映射类--数据库表结构

一旦创建了基类,就可以创建自定义映射类了,映射类相当于将表结构转换为类结构

  1. from sqlalchemy import Column,Integer,String
  2. class Departments(Base):                                                                           # 必须继承于Base
  3. __tablename__ = 'departments'                                                            # 库中的表名
  4. dep_id = Column(Integer, primary_key=True)                                       #Integer整数类型,primary_key主键
  5. dep_name = Column(String(20), nullable=False, unique=True)           #nullable非空约束,unique唯一性约束
  6. def __str__(self):
  7. return '[部门ID:%s, 部门名称:%s]' % (self.dep_id, self.dep_name)

4.创建架构--创建表

类构建完成后,表的信息将被写入到表的元数据(metadata),综上Departments类。可以看到表的结构信息

>>> Departments.__table__
Table('departments', MetaData(bind=None), Column('dep_id', Integer(), table=<departments>, primary_key=True, nullable=False), Column('dep_name', String(length=20), table=<departments>, nullable=False), schema=None)

>>> Base.metadata.create_add(engine)          #在数据库中创建表

三、sqlalchemy的增删改查

1.创建会话类Session

ORM访问数据库的句柄被称为Session

  1. >>>from sqlalchemy.orm import sessionmaker             #导入模块
  2. >>>Session=sessionmaker(bind=engine)                     #如果创建session时engine存在
  3. >>>Session=sessionmaker()                                         #创建session时engine不存在,可以后期绑定
  4. >>>Session.configure(bin=engine)

2.Session添加新对象--数据库插入操作

会话类的实例对象用于绑定到数据库,当实例初次使用时,它将从Engine维护的连接池中获得一个连接,当所有的事务均被commit或会话对象关闭时,连接结束

  1. >>>session=Session()                                                   #创建对话
  2. >>>dep_dev=Departments(dep_name="财务部")         #实例化对象
  3. >>>session.add(dep_dev)                                             #向session中插入一条字段
  4. >>>session.commit()                                                      #提交
  5. >>>session.close()                                                         #关闭会话
  6. >>>ops = Departments(dep_id=2, dep_name='人事部')               #一次提交多个字段
  7. >>>dev = Departments(dep_id=3, dep_name='财务部')
  8. >>>deps = [ops, dev]
  9. >>>session = Session()
  10. >>>session.add_all(deps)
  11. >>>session.commit()
  12. >>>session.close()

3.创建映射类--创建表结构--外键约束

ORM映射关系也可用于表间创建外键约束

  1. class Employees(Base):                                                               # 必须继承于Base
  2. __tablename__ = 'employees'                                                      # 库中的表名
  3. # 每个属性都是表中的一个字段,是类属性
  4. emp_id = Column(Integer, primary_key=True)                             #Integer整数类型,primary_key主键
  5. name = Column(String(20), nullable=False)                                 # String字符串类型,nullable非空约束
  6. gender = Column(String(6))
  7. phone = Column(String(11))
  8. email = Column(String(50))
  9. dep_id = Column(Integer, ForeignKey('departments.dep_id'))     #与departments中dep_id做外键关联
  10. def __str__(self):
  11. return '员工:%s' % self.name

4.SQLAlchemy查询操作

通过session的query()函数创建查询对象

query()函数可以接受多种参数

1)查询所有字段

  1. >>>session=Session()
  2. >>>qresult=session.query(Departments).order_by(Departments.dep_id)      #利用query函数查出记录存放到变量里
  3. >>>for i in qresult:
  4. >>>   print(i)

2)查询部分字段

  1. >>>session=Session()
  2. >>>for id,name in session.query(Departments.id,Departments.name):
  3. >>>    print('id:%s , name: %s' % (id,name))

3)查询并排序

按照Departments.id排序显示

  1. >>>session=Session()
  2. >>>for id,name in session.query(Departments).order_by(Departments.id):
  3. >>>    print('id:%s , name: %s' % (id,name))

4)切片查询

切片查询一般与排序查询组合使用,常用于分页操作

  1. >>>session=Session()
  2. >>>for id,name in session.query(Departments).order_by(Departments.id)[2:10]:
  3. >>>   print('id:%s , name: %s' % (id,name))

5)条件查询(过滤查询)

过滤查询可以单独用也可以叠加使用,也可以使用or_ 或者and_

  1. >>>session=Session()
  2. >>>for id,name in session.query(Departments).filter(Departments.id==2):
  3. >>>    print('id:%s , name: %s' % (id,name))
  4. #过滤查询可以单独用也可以叠加使用
  5. >>>for id,name in session.query(Departments).filter(Departments.a>=100).filter(Departments.b>=100):
  6. >>>   print('id:%s , name: %s' % (id,name))
  7. #也可以通过and_符号使用,代表即满足a又满足b
  8. >>>for id,name in session.query(Departments).filter(and_(Departments.a>=100,(Departments.b>=100)):
  9. >>>   print('id:%s , name: %s' % (id,name))
  10. #也可以通过or_符号使用,代表即满足a或b的任意一个
  11. >>>for id,name in session.query(Departments).filter(or_(Departments.a>=100,(Departments.b>=100)):
  12. >>>    print('id:%s , name: %s' % (id,name))

常用过滤符:

相等:query.filter(Departments.name == ''libai")

不相等:query.filter(Departments.name != ''libai")

模糊查询:query.filter(Departments.name.like(''%li"))

in:query.filter(Departments.name.in_(['libai','zhangsan'])               #查询libai或zhangsan

not in:query.filter(~Departments.name.in_(['libai','zhangsan'])       #查询除libai或zhangsan

字段为空:query.filter(~Departments.name.is_(None)                       #查询为空的Departments.name字段字段不为空:query.filter(~Departments.name.isnot(None)                 #查询不为空的Departments.name字段

或查询:query(Departments).filter(and_(Departments.a>=100,(Departments.b>=100))

且查询:query(Departments).filter(or_(Departments.a>=100,(Departments.b>=100))

6)多表查询

通过join()方法实现多表查询

  1. >>>session=Session()
  2. >>>for id,name in session.query(Departments.name,Employees.name).join(Departments):
  3. >>>   print('id:%s , name: %s' % (id,name))

5.更新数据

通过session的update()方法更新

  1. >>>session=Session()
  2. >>>q1=session.query(Departments).filter(Departments.id==1)       #通过变量保留查询结果
  3. >>>q1=session.query(Departments).get(1)                                     #如果主键是int类型可以直接获取
  4. >>>q.update({Departments.name:'人事部'})                                     #更新值
  5. #也可以一步到位
  6. >>>session.query(Departments).filter(Departments.id==1).update({Departments.name:'人事部'})
  7. >>>q.commit()
  8. >>>q.close()

6.删除记录

通过session的delete()方法更新

  1. >>>session=Session()
  2. >>>q1=session.query(Departments).filter(Departments.id==1)       #通过变量保留查询结果
  3. >>>q1=session.query(Departments).get(1)                                     #如果主键是int类型可以直接获取
  4. >>>q.delete(q1)                                                                                #更新值
  5. >>>q.commit()
  6. >>>q.close()

四、实验1--使用SQLAlchemy创建表

要求:

  1. 创建employees表
  2. 创建部门表
  3. 创建salary表
  4. 表间创建恰当的关系

步骤一:SQLAlchemy安装

注意:sqlalchemy可以连接各种数据库

  1. [root@serwang ~]# pip3 install sqlalchemy
  2. Collecting sqlalchemy
  3. Downloading http://pypi.doubanio.com/packages/aa/cc/48eec885d81f7260b07d
  4. 961b3ececfc0aa82f7d4a8f45ff997e0d3f44ba/SQLAlchemy-1.2.11.tar.gz (5.6MB)
  5. ...
  6. ...
  7. Installing collected packages: sqlalchemy
  8. Running setup.py install for sqlalchemy ... done
  9. Successfully installed sqlalchemy-1.2.11
  10. You are using pip version 9.0.1, however version 18.0 is available.
  11. You should consider upgrading via the 'pip install --upgrade pip' command.

步骤二:为SQLAlchemy创建数据库

  1. MariaDB [tedu]> CREATE DATABASE tarena DEFAULT CHARSET 'utf8';

步骤三:创建部门表,创建dbconn.py文件,编写如下代码:

1) 创建连接到数据库的引擎

  1. [root@localhost day10]# vim dbconn.py
  2. #!/usr/bin/env python3
  3. from sqlalchemy import create_engine
  4. # 创建连接到数据库的引擎
  5. engine = create_engine(
  6. #指定数据库、用户名、密码、连接到哪台服务器、库名等信息
  7. 'mysql+pymysql://root:tedu.cn@localhost/tarena?charset=utf8',
  8. encoding='utf8',
  9. echo=True    #终端输出
  10. )

2)创建ORM映射,生成ORM映射所需的基类

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

3)自定义映射类,创建部门表

  1. from sqlalchemy import Column, String, Integer
  2. class Departments(Base):                                                                  # 必须继承于Base
  3. __tablename__ = 'departments'                                                         # 库中的表名
  4. dep_id = Column(Integer, primary_key=True)                                    #Integer整数类型,primary_key主键
  5. dep_name = Column(String(20), nullable=False, unique=True)        #nullable非空约束,unique唯一性约束
  6. def __str__(self):
  7. return '[部门ID:%s, 部门名称:%s]' % (self.dep_id, self.dep_name)
  8. if __name__ == '__main__':
  9. Base.metadata.create_all(engine)                        # 在数据库中创建表,如果库中已有同名的表,将不会创建

4)测试脚本执行,生成部门表

  1. [root@localhost day10]# python3 dbconn.py    #成功生成部门表

5)进入数据库查看结果

  1. #登录数据库
  2. [root@localhost day10]# mysql -uroot -ptedu.cn
  3. #查看数据库表
  4. MariaDB [(none)]> use tarena;
  5. Reading table information for completion of table and column names
  6. You can turn off this feature to get a quicker startup with -A
  7. Database changed
  8. MariaDB [tarena]> show tables;
  9. +------------------+
  10. | Tables_in_tarena |
  11. +------------------+
  12. | departments |
  13. +------------------+
  14. 1 row in set (0.00 sec)

步骤四:创建员工表,在dbconn.py文件中添加如下数据:

1)创建员工表

  1. from sqlalchemy import ForeignKey                                            #导入外键
  2. class Employees(Base):                                                              # 必须继承于Base
  3. __tablename__ = 'employees' # 库中的表名
  4. emp_id = Column(Integer, primary_key=True)                          #Integer整数类型,primary_key主键
  5. name = Column(String(20), nullable=False)                             # String字符串类型,nullable非空约束
  6. gender = Column(String(6))
  7. phone = Column(String(11))
  8. email = Column(String(50))
  9. dep_id = Column(Integer, ForeignKey('departments.dep_id'))    #与departments中dep_id做外键关联
  10. def __str__(self):
  11. return '员工:%s' % self.name

4)测试脚本执行,生成员工表

  1. [root@localhost day10]# python3 dbconn.py    #成功生成员工表

5)进入数据库查看结果

  1. #登录数据库
  2. [root@localhost day10]# mysql -uroot -ptedu.cn
  3. #查看数据库表
  4. MariaDB [(none)]> use tarena;
  5. Reading table information for completion of table and column names
  6. You can turn off this feature to get a quicker startup with -A
  7. Database changed
  8. MariaDB [tarena]> show tables;
  9. +------------------+
  10. | Tables_in_tarena |
  11. +------------------+
  12. | departments |
  13. | employees |
  14. +------------------+
  15. 2 rows in set (0.00 sec)

步骤五:创建工资表,在dbconn.py文件中添加如下数据:

1)创建工资表

  1. from sqlalchemy import Date                                               #导入外键
  2. class Employees(Base):                                                       # 必须继承于Base
  3. __tablename__ = 'employees'                                           #库中的表名
  4. emp_id = Column(Integer, primary_key=True)                  #Integer整数类型,primary_key主键
  5. name = Column(String(20), nullable=False)                      # String字符串类型,nullable非空约束
  6. gender = Column(String(6))
  7. phone = Column(String(11))
  8. email = Column(String(50))
  9. dep_id = Column(Integer, ForeignKey('departments.dep_id'))    #与departments中dep_id做外键关联
  10. def __str__(self):
  11. return '员工:%s' % self.name
  12. class Salary(Base):                                                                       # 必须继承于Base
  13. __tablename__ = 'salary'                                                            # 库中的表名
  14. auto_id = Column(Integer, primary_key=True)                           #Integer整数类型,primary_key主键
  15. date = Column(Date)                                                                  #导入日期
  16. emp_id = Column(Integer, ForeignKey('employees.emp_id'))   #与employees中emp_id做外键关联
  17. basic = Column(Integer)                                                             #基本工资
  18. awards = Column(Integer)                                                          #奖金

4)测试脚本执行,生成员工表

  1. [root@localhost day10]# python3 dbconn.py    #成功生成工资表

5)进入数据库查看结果

  1. #登录数据库
  2. [root@localhost day10]# mysql -uroot -ptedu.cn
  3. #查看数据库表
  4. MariaDB [(none)]> use tarena;
  5. Reading table information for completion of table and column names
  6. You can turn off this feature to get a quicker startup with -A
  7. Database changed
  8. MariaDB [tarena]> show tables;
  9. +------------------+
  10. | Tables_in_tarena |
  11. +------------------+
  12. | departments |
  13. | employees |
  14. | salary |
  15. +------------------+
  16. 3 rows in set (0.00 sec)

五、实验2--使用SQLAlchemy做增删改查操作

要求:

  1. 分别在部门表、员工表和工资表中加入数据
  2. 通过SQLAlchemy代码实现
  3. 分别练习每次加入一行数据和每次可加入多行数据

步骤一:向部门表添加数据,创建add_department.py文件,添加如下代码:

1)创建映射类的实例

  1. [root@localhost day10]# vim add_department.py
  2. from dbconn import Departments
  3. hr = Departments(dep_id=1, dep_name='hr')
  4. print(hr.dep_name)
  5. print(hr.dep_id)

测试执行结果:

  1. [root@localhost day10]# python3 add_department.py
  2. hr
  3. 1

登录数据库查看,部门表中数据为空,此时,并不会真正在数据库表中添加记录

  1. MariaDB [tarena]> select * from departments;
  2. Empty set (0.00 sec)

2) 想在数据库中添加数据需完成如下操作,创建会话类

在dbconn.py文件中,添加如下代码:

通过将sessionmaker与数据库引擎绑定,创建会话类Session

  1. from sqlalchemy.orm import sessionmaker
  2. Session = sessionmaker(bind=engine)

3)添加新对象

在add_department.py文件中添加如下代码:

  1. from dbconn import Departments, Session
  2. session = Session()                              #创建会话类实例
  3. session.add(hr)                                    #向实例绑定的数据库添加数据
  4. session.commit()                                  #将数据提交到实例对应数据库
  5. session.close()                                     #关闭session类

测试执行结果:

  1. [root@localhost day10]# python3 add_department.py

登录数据库查看部门表中数据

  1. MariaDB [tarena]> select * from departments;
  2. +--------+----------+
  3. | dep_id | dep_name |
  4. +--------+----------+
  5. | 1 | hr |
  6. +--------+----------+
  7. 1 row in set (0.01 sec)

数据成功添加

4)批量添加新数据

在add_department.py文件中添加如下代码:

  1. ops = Departments(dep_id=2, dep_name='operations')
  2. dev = Departments(dep_id=3, dep_name='development')
  3. finance = Departments(dep_id=4, dep_name='财务部')
  4. deps = [ops, dev]
  5. session = Session()
  6. session.add_all(deps)
  7. session.add(finance)
  8. session.commit()
  9. session.close()

此时注意:

添加过的数据不要再添加,即将session.add(hr)注释掉。

如果文件中有中文,注意在dbconn.py文件中,将engine的参数修改为如下代码:

  1. engine=create_engine(
  2. 'mysql+pymysql://root:tedu.cn@localhost/tarena?charset=uU8',
  3. encoding='uU8',
  4. echo=True
  5. )

测试执行结果:

  1. [root@localhost day10]# python3 add_department.py

登录数据库查看部门表中数据

  1. MariaDB [tarena]> select * from departments;
  2. +--------+-------------+
  3. | dep_id | dep_name |
  4. +--------+-------------+
  5. | 3 | development |
  6. | 1 | hr |
  7. | 2 | operations |
  8. | 4 | 财务部 |
  9. +--------+-------------+
  10. 4 rows in set (0.00 sec)

数据成功添加

步骤二:向员工表批量添加数据,创建add_employees.py文件,添加如下代码:

  1. from dbconn import Employees, Session
  2. wj = Employees(
  3. emp_id=1,name='王俊',gender='男',phone='15678789090',email='wj@163.com', dep_id=3
  4. )
  5. wwc = Employees(
  6. emp_id=2,name='吴伟超',gender='男',phone='13499887755',email='wwc@qq.com', dep_id=3
  7. )
  8. dzj = Employees(
  9. emp_id=3, name='董枝俊', gender='男', phone='18900998877', email='dzj@163.com', dep_id=3
  10. )
  11. ltd = Employees(
  12. emp_id=4, name='李通达', gender='男', phone='13378904567', email='ltd@163.com', dep_id=2)
  13. wxy = Employees(
  14. emp_id=5, name='王秀燕', gender='女', phone='15098765432', email='wxy@tedu.cn', dep_id=2)
  15. gq = Employees(
  16. emp_id=6, name='高琦', gender='女', phone='15876543212', email='gq@tarena.com', dep_id=1)
  17. wzf = Employees(
  18. emp_id=7, name='王召飞', gender='男', phone='15609871234', email='wzf@sohu.com', dep_id=1)
  19. sy = Employees(
  20. emp_id=8, name='孙燕', gender='女', phone='18567895435', email='sy@163.com', dep_id=4)
  21. gpf = Employees(
  22. emp_id=9, name='高鹏飞', gender='男', phone='13566889900', email='gpf@163.com', dep_id=2)
  23. emps = [wj, wwc, dzj, ltd, wxy, gq, wzf, sy, gpf]
  24. session = Session()
  25. session.add_all(emps)
  26. session.commit()
  27. session.close()

测试执行结果:

  1. [root@localhost day10]# python3 add_employees.py

登录数据库查看部门表中数据

  1. MariaDB [tarena]> select * from employees;
  2. +--------+-----------+--------+-------------+---------------+--------+
  3. | emp_id | name | gender | phone | email | dep_id |
  4. +--------+-----------+--------+-------------+---------------+--------+
  5. | 1 | 王俊 | 男 | 15678789090 | wj@163.com | 3 |
  6. | 2 | 吴伟超 | 男 | 13499887755 | wwc@qq.com | 3 |
  7. | 3 | 董枝俊 | 男 | 18900998877 | dzj@163.com | 3 |
  8. | 4 | 李通达 | 男 | 13378904567 | ltd@163.com | 2 |
  9. | 5 | 王秀燕 | 女 | 15098765432 | wxy@tedu.cn | 2 |
  10. | 6 | 高琦 | 女 | 15876543212 | gq@tarena.com | 1 |
  11. | 7 | 王召飞 | 男 | 15609871234 | wzf@sohu.com | 1 |
  12. | 8 | 孙燕 | 女 | 18567895435 | sy@163.com | 4 |
  13. | 9 | 高鹏飞 | 男 | 13566889900 | gpf@163.com | 2 |
  14. +--------+-----------+--------+-------------+---------------+--------+
  15. 9 rows in set (0.00 sec)

数据成功添加

步骤三:向工资表添加数据,创建add_ salary.py文件,添加如下代码:

  1. from dbconn import Salary, Session
  2. jan2018_1 = Salary(date='2018-01-10', emp_id=1, basic=10000, awards=2000)
  3. jan2018_2 = Salary(date='2018-01-10', emp_id=2, basic=11000, awards=1500)
  4. jan2018_3 = Salary(date='2018-01-10', emp_id=3, basic=11000, awards=2200)
  5. jan2018_4 = Salary(date='2018-01-10', emp_id=4, basic=11000, awards=3000)
  6. jan2018_5 = Salary(date='2018-01-10', emp_id=1, basic=13000, awards=2000)
  7. jan2018_6 = Salary(date='2018-01-10', emp_id=6, basic=15000, awards=3000)
  8. jan2018_7 = Salary(date='2018-01-10', emp_id=7, basic=9000, awards=3000)
  9. jan2018_8 = Salary(date='2018-01-10', emp_id=8, basic=13000, awards=2000)
  10. jan2018_9 = Salary(date='2018-01-10', emp_id=9, basic=13000, awards=1500)
  11. session = Session()
  12. sals = [jan2018_1, jan2018_2, jan2018_3,jan2018_4, jan2018_5, jan2018_6, jan2018_7, jan2018_8, jan2018_9]
  13. session.add_all(sals)
  14. session.commit()
  15. session.close()

测试执行结果:

  1. [root@localhost day10]# python3 add_ salary.py

登录数据库查看部门表中数据

  1. MariaDB [tarena]> select * from salary;
  2. +---------+------------+--------+-------+--------+
  3. | auto_id | date | emp_id | basic | awards |
  4. +---------+------------+--------+-------+--------+
  5. | 1 | 2018-01-10 | 1 | 10000 | 2000 |
  6. | 2 | 2018-01-10 | 2 | 11000 | 1500 |
  7. | 3 | 2018-01-10 | 3 | 11000 | 2200 |
  8. | 4 | 2018-01-10 | 4 | 11000 | 3000 |
  9. | 5 | 2018-01-10 | 1 | 13000 | 2000 |
  10. | 6 | 2018-01-10 | 6 | 15000 | 3000 |
  11. | 7 | 2018-01-10 | 7 | 9000 | 3000 |
  12. | 8 | 2018-01-10 | 8 | 13000 | 2000 |
  13. | 9 | 2018-01-10 | 9 | 13000 | 1500 |
  14. +---------+------------+--------+-------+--------+
  15. 9 rows in set (0.00 sec)

数据成功添加

步骤四:修改表中的记录,首先需要把记录找到

  1. qset12 = session.query(Department).filter(Department.dep_name=='人事部')
  2. hr = qset12.one()

步骤五:删除记录与修改类似,先找到记录再执行删除

  1. qset13 = session.query(Employee).filter(Department.dep_name=='设计部')
  2. dep = qset13.one()
  3. session.delete(dep)
  4. session.commit()

步骤六:查询每个员工所在的部门涉及的是多表查询,因为员工表中只有部门ID,部门名称在部门表中存储

  1. qset10 = session.query(Employee.emp_name, Department.dep_name).join(Department)
  2. for row in qset10:
  3. print(row)

python SQLAlchemy数据库工具相关推荐

  1. python SQLAlchemy数据库操作

    文章目录 1 增 2 删 3 改 4 基础查询 4.1 基础查询汇总 4.2 限制查询 4.3 计数 4.4 去重 4.5 排序 4.6 模糊查询 4.7 分组查询 4.8 聚合函数 5 多表查询 5 ...

  2. python操作数据库工具类

    <pre name="code" class="python">#!/usr/bin/python # -*- coding: utf-8 -*- ...

  3. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  4. Python sqlalchemy 连接常用的数据库

    python连接sqlServer数据库,Oracle数据库,MongoDB数据库,mysql数据库 python sqlalchemy 简介 学习链接 sqlalchemy是什么? sqlalche ...

  5. Python SQLAlchemy入门教程

    原文:https://www.cnblogs.com/ybjourney/p/11832045.html Python SQLAlchemy入门教程 一.介绍 关于ORM 为什么用sqlalchemy ...

  6. python sqlalchemy mysql 自动映射

    SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作 简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果 ...

  7. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

  8. python oracle 工具类,python连接Oracle工具类

    上代码: # -*- coding:utf-8 -*- import cx_Oracle import pandas as pd class ORACLE(object): def __init__( ...

  9. 6.9 用Python操控数据库(批量删除,百度新闻数据爬取与存储,写入数据时进行去重处理,pandas读取sql数据)

    学习完MySQL数据库的基本操作后,下面来学习如何用Python连接数据库,并进行数据的插入.查找.删除等操作. 6.9.1 用PyMySQL库操控数据库 上一节在phpMyAdmin 中创建了数据库 ...

最新文章

  1. “深度学习一点也不难!”
  2. 阿里提出电商搜索全局排序方法,淘宝无线主搜GMV提升5%
  3. 《天气一点通》隐私策略
  4. Boost:字符串正则表达式的测试程序
  5. 【渝粤题库】陕西师范大学164108 网络营销与策划 作业 (高起专)
  6. Hiv:SQuirrel连接hive配置
  7. 快准牌电脑发软件_做自媒体必备技能,视频剪辑软件排名(精品篇)
  8. 【Python】python3编码方式encode介绍
  9. 冬季美食不可少烤肉和火锅,最具诱惑的手绘肉食插画素材,让设计师勾引你的味蕾
  10. 利用cad计算型材的弹性模量_3米高广告牌钢结构设计计算书(最后附CAD图纸)
  11. web前端软件VS-Code-的下载和安装
  12. PS命令各字段英文全称
  13. Unity 制造moba英雄联盟战争迷雾2
  14. C# ZXing.net解码测试(QRCode、DataMatrix、1D-Barcode一维码条码)
  15. 免费的图片编辑app有哪些?跟你分享这三个软件
  16. Windows Server 2012 IPAM实战
  17. CSS3毛玻璃的几种效果
  18. DBSCAN聚类算法原理及图解
  19. android使用Bitmap将jpg转化为灰度的bmp格式图片
  20. K210学习笔记(八)——人脸检测和人脸识别

热门文章

  1. 义乌的外贸商家都是怎么结汇的?
  2. MAC:外接其他接盘设置f1——f12功能键位
  3. adb shell 小米手机_小米手机ADB删除系统应用去广告
  4. 蓝牙通信,通过蓝牙传照片
  5. mysql、mariadb下载
  6. 小程序如何解决文件缓存问题?
  7. 511. Game Play Analysis I
  8. 记录一次ssh密码被爆破
  9. 将txt文件转换为m3u文件
  10. 16位与BCD码关系与区别