当前位置:   article > 正文

sqlalchemy在python中的使用(基本使用)一

python 怎么校验sqlalchemy是否连接成功

本文介绍sqlalchemypython中的使用,不涉及到flask或者tornado框架,需要的时候融入到框架项目中即可。

一、依赖包的安装

  • 1、安装sqlalchemy

    1. pip3 install sqlalchemy
    2. 复制代码
  • 2、安装pymysql

    1. pip3 install pymysql
    2. 复制代码

二、创建连接(使用python代码连接到mysql)

  • 1、新建数据库

    1. mysql> create database sqlalchemy_data charset=utf8;
    2. 复制代码
  • 2、新建一个文件connect.py

  • 3、导包及数据库的基本信息

    1. from sqlalchemy import create_engine
    2. HOSTNAME = '127.0.0.1'
    3. PORT = '3306'
    4. DATABASE = 'sqlalchemy_data'
    5. USERNAME = 'root'
    6. PASSWORD = 'root'
    7. 复制代码
  • 4、使用pymysql创建连接的db_url

    1. db_url = 'mysql+pymysql://{username}:{password}@{hostname}:{port}/{database}?charset=utf8'.format(
    2. username=USERNAME,
    3. password=PASSWORD,
    4. hostname=HOSTNAME,
    5. port=PORT,
    6. database=DATABASE
    7. )
    8. 复制代码
  • 5、创建一个引擎

    1. # 创建引擎
    2. engine = create_engine(db_url)
    3. 复制代码
  • 6、测试连接是否成功

    1. if __name__ == "__main__":
    2. connection = engine.connect()
    3. result = connection.execute('select 1')
    4. print(result.fetchone())
    5. 复制代码
  • 7、完整代码

    1. from sqlalchemy import create_engine
    2. HOSTNAME = '127.0.0.1'
    3. PORT = '3306'
    4. DATABASE = 'sqlalchemy_data'
    5. USERNAME = 'root'
    6. PASSWORD = 'jianshuihen128'
    7. db_url = 'mysql+pymysql://{username}:{password}@{hostname}:{port}/{database}?charset=utf8'.format(
    8. username=USERNAME,
    9. password=PASSWORD,
    10. hostname=HOSTNAME,
    11. port=PORT,
    12. database=DATABASE
    13. )
    14. # 创建引擎
    15. engine = create_engine(db_url)
    16. if __name__ == "__main__":
    17. connection = engine.connect()
    18. result = connection.execute('select 1')
    19. print(result.fetchone())
    20. 复制代码

三、使用sqlalchemy创建数据表

  • 1、创建一个modules的文件,存放数据模型

  • 2、在connect.py文件中添加连接的sessiondeclarative_base

    1. from sqlalchemy.ext.declarative import declarative_base
    2. from sqlalchemy.orm import sessionmaker
    3. # sessionmaker生成一个session类
    4. Session = sessionmaker(bind=engine)
    5. dbSession = Session()
    6. Base = declarative_base(engine)
    7. 复制代码
  • 3、在modules包下创建一个user_module.py的文件

    1. import datetime
    2. from uuid import uuid4
    3. from sqlalchemy import Column, Integer, String, DateTime, Boolean
    4. from sqlalchemy_demo.connect import Base
    5. class UserModule(Base):
    6. """
    7. 创建一个用户的数据模型
    8. """
    9. __tablename__ = 'user'
    10. uuid = Column(String(36), unique=True, nullable=False, default=lambda: str(uuid4()), comment='uuid')
    11. id = Column(Integer, primary_key=True, autoincrement=True, comment='用户id')
    12. user_name = Column(String(30), nullable=False, unique=True, comment='用户名')
    13. password = Column(String(64), nullable=False, comment='用户密码')
    14. createtime = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
    15. updatetime = Column(DateTime, default=datetime.datetime.now, comment='修改时间')
    16. is_lock = Column(Boolean, default=False, nullable=False, comment='是否锁住用户')
    17. def __repr__(self):
    18. return 'User(uuid={uuid}, id={id}, user_name={user_name}, password={password}, createtime={createtime}, updatetime={updatetime}, is_lock={is_lock})'.format(
    19. uuid=self.uuid, id=self.id, user_name=self.user_name, password=self.password, createtime=self.createtime,
    20. updatetime=self.updatetime, is_lock=self.is_lock)
    21. 复制代码
  • 4、运动代码创建数据表(user_module.py文件下)

    1. if __name__ == "__main__":
    2. Base.metadata.create_all()
    3. 复制代码
  • 5、查看数据表信息

    1. mysql> desc user;
    2. +------------+-------------+------+-----+---------+----------------+
    3. | Field | Type | Null | Key | Default | Extra |
    4. +------------+-------------+------+-----+---------+----------------+
    5. | uuid | varchar(36) | NO | UNI | NULL | |
    6. | id | int(11) | NO | PRI | NULL | auto_increment |
    7. | user_name | varchar(30) | NO | UNI | NULL | |
    8. | password | varchar(64) | NO | | NULL | |
    9. | createtime | datetime | YES | | NULL | |
    10. | updatetime | datetime | YES | | NULL | |
    11. | is_lock | tinyint(1) | NO | | NULL | |
    12. +------------+-------------+------+-----+---------+----------------+
    13. 7 rows in set (0.01 sec)
    14. mysql>
    15. 复制代码

四、对数据表简单的增删改查

  • 1、单独创建一个test_user.py的测试文件

  • 2、确保前面在connect.py文件中新增的

    1. from sqlalchemy.orm import sessionmaker
    2. # sessionmaker生成一个session类
    3. Session = sessionmaker(bind=engine)
    4. dbSession = Session()
    5. 复制代码
  • 3、新增单条数据

    1. from sqlalchemy_demo.connect import dbSession
    2. from sqlalchemy_demo.modules.user_module import UserModule
    3. def add_user():
    4. row = UserModule(user_name='张三', password='123')
    5. dbSession.add(row)
    6. dbSession.commit()
    7. if __name__ == "__main__":
    8. add_user()
    9. 复制代码
  • 4、同时新增多条数据

    1. from sqlalchemy_demo.connect import dbSession
    2. from sqlalchemy_demo.modules.user_module import UserModule
    3. def add_user():
    4. dbSession.add_all([
    5. UserModule(user_name='王五', password='123'),
    6. UserModule(user_name='马六', password='123'),
    7. UserModule(user_name='赵五', password='123'),
    8. ])
    9. dbSession.commit()
    10. if __name__ == "__main__":
    11. add_user()
    12. 复制代码
  • 5、查询数据

    1. ...
    2. def query_user():
    3. rows = dbSession.query(UserModule).all()
    4. print(rows)
    5. ...
    6. 复制代码
  • 6、修改数据

    1. ...
    2. def update_user():
    3. row = dbSession.query(UserModule).filter(UserModule.id == 1).update({UserModule.password: '234'})
    4. print(row)
    5. dbSession.commit()
    6. ...
    7. 复制代码
  • 7、删除数据

    1. ...
    2. def delete_user():
    3. row = dbSession.query(UserModule).filter(UserModule.id == 3)[0]
    4. print(row)
    5. dbSession.delete(row)
    6. dbSession.commit()
    7. ...
    8. 复制代码
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/927221
推荐阅读
相关标签
  

闽ICP备14008679号