Python编程:使用pythink查询数据库

简介: Python编程:使用pythink查询数据库

image.png

import pymysql 
conn = pymysql.Connect(
    host="127.0.0.1", 
    port=3306, 
    user="root",
    passwd="123456",
    db="test"
)
cursor = conn.cursor()
rows = cursor.execute("insert into student(name, age, register_date, gender) values ('xiaoming', 23, '2018-12-30', 'M')")
cursor.close()
conn.close()

后来使用了peewee 来管理数据库链接,使用Model来创建数据库(这个时候还没有人管理数据库),简直不要太爽,不写一行SQL语句就实现了表创建,和数据操作;


后来我这边的表太多了,业务发展也规范了,专门有人管理数据库。这样就不能使用Model直接建表,而是要写成sql语句给数据库管理人员,审核完后再进行建表操作


from peewee import *
# 设置数据库
db = MySQLDatabase("mysql://root:123456@127.0.0.1:3306/demo")
class BaseModel(Model):
    class Meta:
        database = db
# 定义数据表
class User(BaseModel):
    name = CharField()
User.create(name="Tom")

在这种情况下,如果使用Model就必须先写sql建表,再把所有字段定义写出来才可以使用,如果涉及的表字段少还好,有时候涉及100多个字段(真的有过),那光是定义就一上午,Model的优势反而成了累赘,心累;


于是我开始不用Model了,直接使用peewee 提供execute_sql 这样我们又回到了原生sql的时代;

db.execute_sql("insert into student(name, age) values ('Tom', 24)")

一般情况下,会将sql执行的语句和结果封装到一个函数中。写的多了,发现很多重复代码,除了sql不一样以外,其他格式基本一致。于是需要抽象出来,将相同代码抽象封装,以便复用。


于是pythink 出现了,结合了peewee 的操作方式,也保留了一部分原生sql 的格式,比如,增(insert)、删(delete)、改(update)、查(select)基本保留了sql的关键字,不需要额外记忆和区别,而且可以把对表的操作单独卸载model中,进行统一管理,也可以重写基类的方法,自己实现自己的业务逻辑(不建议,建议取一个不一样的函数名字)。


一起感受下其如丝般顺滑的操作


安装

pip install pythink

代码示例

数据库demo 中有 一个表student,对其进行数据查询


mysql> use demo;
mysql> select * from student limit 2;
+----+------+------+------+
| id | name | age  | sex  |
+----+------+------+------+
|  1 | Tom  |   24 |    1 | 
|  2 | jack |   23 |    0 |
+----+------+------+------+
2 rows in set (0.00 sec)
# -*- coding: utf-8 -*-
from pythink import ThinkModel
from playhouse.db_url import connect
# 1、使用peewee进行数据库连接
db = connect("mysql://root:123456@127.0.0.1:3306/demo")
# 2、继承 ThinkModel 实现自己的类
class StudentThinkModel(ThinkModel):
    table_name = "student"
    database = db
# 3、数据插入insert
data = {
    "name": "Tom",
    "age": 24
}
result = StudentThinkModel.insert(data)
print(result)
# 1
# 4、删除
result = StudentThinkModel.delete(13)
print(result)
# 1
# 5、修改
data = {
    "name": "Tom",
    "age": 24
}
result = StudentThinkModel.update(1, data)
print(result)
# 1
# 6、查询数据库中 id=1 的 name 和 age 两个字段
students = StudentThinkModel.select(fields=["name", "age"],  where="id=1", limit=1)
for student in students:
    print("name: {}".format(student.name))
    print("age: {}".format(student.age))
"""
name: Tom
age: 24
"""
# 7、记得关闭数据库连接
db.close()

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
372 7
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
207 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
475 3
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
291 3
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
295 0
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
315 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
343 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
273 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
206 82
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
92 0

热门文章

最新文章

推荐镜像

更多