sqlalchemy的基本使用
SQLAlchemy 1.4 版本的基本使用
from datetime import datetime
from urllib.parse import quote_plus
from sqlalchemy import Column, create_engine, Integer, String, DateTime, inspect
from sqlalchemy.orm import declarative_base, Session
Base = declarative_base()
def get_engine():
ip = "192.168.124.85"
port = 3306
username = "root"
password = "root"
db_name = "demo"
connection_params = f"mysql+pymysql://{username}:{quote_plus(password)}@{ip}:{port}/{db_name}"
engine = create_engine(connection_params)
return engine
class User(Base):
__tablename__ = "user_info"
id = Column(Integer, primary_key=True)
name = Column(String(50))
full_name = Column(String(128))
age = Column(Integer)
memo = Column(String(255))
create_time = Column(DateTime, default=datetime.now)
update_time = Column(DateTime, default=datetime.now)
if __name__ == "__main__":
engine = get_engine()
# 表不存在则创建
insp = inspect(engine)
table_name = User.__tablename__
if not insp.has_table(table_name):
print(f"{table_name} 表不存在")
Base.metadata.create_all(engine)
print(f"{table_name} 表已创建")
# 测试添加数据
user = User(name="ok", age=23)
with Session(engine) as session:
session.add(user)
session.commit()
其中 Column 的 default 是由 sqlalchemy 提供的,在插入数据的时候,由 sqlalchemy 提供这部分字段的值。
而 server_default 是由数据库提供的,使用 desc table_name 时,会看到这部分字段由默认值,在插入数据时,sqlalchemy 产生的 sql 中不提供这部分字段的值。
有了计划记得推动,不要原地踏步。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤