Python中使用 sqlalchemy 访问数据库和简单操作

在我们的数据仓库设计中,python 是我们用来连接各个数据库和应用逻辑的纽带。python 几乎无所不能,反正性能上有要求的就交给 java,要快速开发的逻辑多变的就交给 python。

python 中访问数据库最有名的就是 sqlalchemy 包了。

from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.sql import select, insert

engine = create_engine('mysql+pymysql://macmini:***@192.168.199.***:3306/test?charset=utf8mb4', pool_recycle=3600)
meta = MetaData(bind=engine)
students = Table("students", meta, autoload=True, autoload_with=engine)

conn = engine.connect()

s = select([students])
result = conn.execute(s)

print(s)

for row in result:
    print(row)

 

通过 sqlalchemy 访问 mysql 数据库,需要先创建一个 engine 对象,输入 mysql 的 ip 地址和用户名密码。后面的就简单了。

sqlalchemy 访问数据库可以用 orm 或者称之为 Expression Language 的方法,上面例子里面的 select 方法就是属于 sqlaclchemy 的快速语言方法,s 变量是用来检验的生成的 sql 语句,

看一下结果就很明白了,列出了sql语句(一般是不需要的),以及 select 的查询结果:

SELECT students.id, students.name, students.sex, students.age, students.tel
FROM students

(1, ‘王刚’, ‘男’, 20, ‘13811371377’)
(2, ‘张三’, ‘男’, 30, ‘16512341234’)

下面则是 insert 的用法,是不是非常简洁,这样的写法避免了 sql 语句的啰嗦,抽象起来,就可以用在业务逻辑复杂多变的场景了,即便是所谓写死的业务逻辑,这样也比较容易看懂,而一般的 sql 语句非常不容易调试:

conn.execute(students.insert(), [
    {'name' : '张三', 'sex' : '男', 'age' : 30, 'tel' : '16512341234'},
    ])