python3使用SQLAlchemy连接数据库

Posted sellsa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3使用SQLAlchemy连接数据库相关的知识,希望对你有一定的参考价值。

安装配置MariaDB

yum install mariadb mariadb-server mariadb-devel
create database first_sqlalchemy charset utf8;
grant all privileges on first_sqlalchemy.* to ‘heboan‘@‘%‘ identified by ‘123456‘;
flush privileges;

信息:
	数据地址: 192.168.88.1:3306
	数据库: first_sqlalchemy
	用户:heboan
	密码:123456

Python3 安装pymysql和sqlalchemy

# pymysql: pymysql是Python用来操作MySQL的包,因此通过pip安装
	pip install pymysql

# SQLAlchemy: SQLALchemy是一个数据的ORM框架,通过pip安装
	pip install sqlalchemy

 

使用SQLAlchemy连接数据库

from sqlalchemy import create_engine

#数据库配置信息
HOST = ‘192.168.88.1‘
PORT = ‘3306‘
DATABASE = ‘first_sqlalchemy‘
USERNAME = ‘heboan‘
PASSWORD = ‘123456‘

# 连接数据库的固定格式:dialect+driver://username:[email protected]:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset-utf8".format(username=USERNAME,
                                                                                        password=PASSWORD,
                                                                                        host=HOST,
                                                                                        port=PORT,
                                                                                        db=DATABASE)

#创建一个引擎
engine = create_engine(DB_URI)

#调用这个引擎的connect方法得到一个对象
conn = engine.connect()

#通过这个对象就可以对数据进行操作
result = conn.execute(‘select version()‘)
print(result.fetchone())

 

ORM介绍

随着项目越来越大,采用原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现:

  1、SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长;会出现很多相近的SQL语句

  2、很多SQL语句是在业务逻辑中拼出来的,如果数据需要更改,就要去修改这些逻辑,比较容易出错

  3、写SQL时容易忽略web安全问题,给未来造成隐患,比如sql注入

ORM,全称Object Relationship Mapping,中文名叫做对象关系映射,通过ORM我们可以使用类的方式去操作数据库,而不用再写原生的SQL语句。通过表映射成类,把行作实例,把字段作属性。ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。使用ORM有许多优点:

  1、易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰

  2、性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销,但从实际情况来看,这种性能损耗不足5%

  3、设计灵活:可以轻松写出复杂的查询

  4、可以移植性:SQLAlchemy封装了底层的数据库实现,支持多个关系型数据库引擎,可以轻松的切换数据库

 

以上是关于python3使用SQLAlchemy连接数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用sqlalchemy的informix DB的Python数据库连接

SQLAlchemy验证SSL连接

聊聊 SQLAlchemy 连接池中的连接失效问题

SQLAlchemy在事务中空闲

使用 sqlalchemy 和 pyodbc 连接到 SQL Server 2012

Python3之sqlalchemy