本文介绍
sqlalchemy
在python
中的使用,不涉及到flask
或者tornado
框架,需要的时候融入到框架项目中即可。
一、依赖包的安装
二、创建连接(使用python
代码连接到MysqL
)
-
1、新建数据库
MysqL> create database sqlalchemy_data charset=utf8;
-
3、导包及数据库的基本信息
from sqlalchemy import create_engine HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'sqlalchemy_data' USERNAME = 'root' PASSWORD = 'root'
-
4、使用
pyMysqL
创建连接的db_url
db_url = 'MysqL+pyMysqL://{username}:{password}@{hostname}:{port}/{database}?charset=utf8'.format( username=USERNAME, password=PASSWORD, hostname=HOSTNAME, port=PORT, database=DATABASE )
-
5、创建一个引擎
# 创建引擎 engine = create_engine(db_url)
-
6、测试连接是否成功
if __name__ == "__main__": connection = engine.connect() result = connection.execute('select 1') print(result.fetchone())
-
7、完整代码
from sqlalchemy import create_engine HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'sqlalchemy_data' USERNAME = 'root' PASSWORD = 'jianshuihen128' db_url = 'MysqL+pyMysqL://{username}:{password}@{hostname}:{port}/{database}?charset=utf8'.format( username=USERNAME, password=PASSWORD, hostname=HOSTNAME, port=PORT, database=DATABASE ) # 创建引擎 engine = create_engine(db_url) if __name__ == "__main__": connection = engine.connect() result = connection.execute('select 1') print(result.fetchone())
三、使用sqlalchemy
创建数据表
-
2、在
connect.py
文件中添加连接的session
与declarative_base
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # sessionmaker生成一个session类 Session = sessionmaker(bind=engine) dbSession = Session() Base = declarative_base(engine)
-
3、在
modules
包下创建一个user_module.py
的文件import datetime from uuid import uuid4 from sqlalchemy import Column, Integer, String, DateTime, Boolean from sqlalchemy_demo.connect import Base class UserModule(Base): """ 创建一个用户的数据模型 """ __tablename__ = 'user' uuid = Column(String(36), unique=True, nullable=False, default=lambda: str(uuid4()), comment='uuid') id = Column(Integer, primary_key=True, autoincrement=True, comment='用户id') user_name = Column(String(30), nullable=False, unique=True, comment='用户名') password = Column(String(64), nullable=False, comment='用户密码') createtime = Column(DateTime, default=datetime.datetime.Now, comment='创建时间') updatetime = Column(DateTime, default=datetime.datetime.Now, comment='修改时间') is_lock = Column(Boolean, default=False, nullable=False, comment='是否锁住用户') def __repr__(self): return 'User(uuid={uuid}, id={id}, user_name={user_name}, password={password}, createtime={createtime}, updatetime={updatetime}, is_lock={is_lock})'.format( uuid=self.uuid, id=self.id, user_name=self.user_name, password=self.password, createtime=self.createtime, updatetime=self.updatetime, is_lock=self.is_lock)
-
4、运动代码创建数据表(
user_module.py
文件下)if __name__ == "__main__": Base.Metadata.create_all()
-
5、查看数据表信息
MysqL> desc user; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | uuid | varchar(36) | NO | UNI | NULL | | | id | int(11) | NO | PRI | NULL | auto_increment | | user_name | varchar(30) | NO | UNI | NULL | | | password | varchar(64) | NO | | NULL | | | createtime | datetime | YES | | NULL | | | updatetime | datetime | YES | | NULL | | | is_lock | tinyint(1) | NO | | NULL | | +------------+-------------+------+-----+---------+----------------+ 7 rows in set (0.01 sec) MysqL>
四、对数据表简单的增删改查
-
2、确保前面在
connect.py
文件中新增的from sqlalchemy.orm import sessionmaker # sessionmaker生成一个session类 Session = sessionmaker(bind=engine) dbSession = Session()
-
3、新增单条数据
from sqlalchemy_demo.connect import dbSession from sqlalchemy_demo.modules.user_module import UserModule def add_user(): row = UserModule(user_name='张三', password='123') dbSession.add(row) dbSession.commit() if __name__ == "__main__": add_user()
-
4、同时新增多条数据
from sqlalchemy_demo.connect import dbSession from sqlalchemy_demo.modules.user_module import UserModule def add_user(): dbSession.add_all([ UserModule(user_name='王五', password='123'), UserModule(user_name='马六', password='123'), UserModule(user_name='赵五', password='123'), ]) dbSession.commit() if __name__ == "__main__": add_user()
-
5、查询数据
... def query_user(): rows = dbSession.query(UserModule).all() print(rows) ...
-
6、修改数据
... def update_user(): row = dbSession.query(UserModule).filter(UserModule.id == 1).update({UserModule.password: '234'}) print(row) dbSession.commit() ...
-
7、删除数据
... def delete_user(): row = dbSession.query(UserModule).filter(UserModule.id == 3)[0] print(row) dbSession.delete(row) dbSession.commit() ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。