python实战:用SQLAlchemy作orm

一,安装SQLAlchemy

1,用pip安装

(venv) [liuhongdi@img news]$ pip3 install sqlalchemy

2,安装完成后查看已安装的版本:

(venv) [liuhongdi@img news]$ pip3 show sqlalchemy
Name: SQLAlchemy
Version: 2.0.27
Summary: Database Abstraction Library
Home-page: https://www.sqlalchemy.org
Author: Mike Bayer
Author-email: mike_mp@zzzcomputing.com
License: MIT
Location: /web/site/python/news/venv/lib/python3.11/site-packages
Requires: greenlet, typing-extensions
Required-by:

二,安装pymysql

1,用pip安装pymysql库

(venv) liuhongdi@192 news % pip3 install pymysql  

2,查看已安装库的信息

(venv) liuhongdi@192 news % pip3 show pymysql  
Name: PyMySQL
Version: 1.1.0
Summary: Pure Python MySQL Driver
Home-page:
Author:
Author-email: Inada Naoki <songofacandy@gmail.com>, Yutaka Matsubara <yutaka.matsubara@gmail.com>
License: MIT License
Location: /Users/liuhongdi/python_work/tutorial/news/venv/lib/python3.12/site-packages
Requires:

Required-by:

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/02/19/python-shi-zhan-yong-sqlalchemy-zuo-orm/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,看一个简单的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import declarative_base
 
import os
import sys
 
# 打印文件的目录路径(文件的上两层目录)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 将这个路径添加到环境变量中。
sys.path.append(BASE_DIR)
 
 
host = conf_node['host']
port = conf_node['port']
user = conf_node['user']
pswd = conf_node['password']
base = conf_node['database']
char = conf_node['charset']
# 得到数据库实例
db = create_engine('mysql+pymysql://', connect_args={'user': user,
                                                     'password': pswd,
                                                     'host': host,
                                                     'port': 3306,
                                                     'database': base,
                                                     'charset': char})
 
# 建立映射关系
Base = declarative_base()
# 定义类
class News(Base):
    __tablename__ = 'news'  # 设置表明
 
    id = Column(Integer, primary_key=True)
    title = Column(String(500))
    url = Column(String(500))
 
# 创建会话
obj_session = sessionmaker(db)
# 打开会话
db_session = obj_session()
# 查询表中所有数据
all_list = db_session.query(News).all()
for obj in all_list:
    print("id:", obj.id)
    print("title:", obj.title)
    print("url:", obj.url)
# 关闭会话
db_session.close()

运行结果:

(venv) [liuhongdi@img news]$ python3 lib/mysql/connection.py
id: 1
title: 新浪微博
url: https://weibo.com
id: 2
title: 百度
url: https://baidu.com

 

posted @ 2024-02-19 18:23  刘宏缔的架构森林  阅读(55)  评论(0编辑  收藏  举报