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, Stringfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.orm import declarative_baseimport osimport 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

浙公网安备 33010602011771号