Python通过ORM操作mysql数据库

Python操作mysql

  1. 连接数据库
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://username:password@ip/数据库名称?charset=utf8")
# 示例,连接本地mysql中的spider库
# engine = create_engine("mysql+pymysql://root:000000@localhost/spider?charset=utf8")
  1. 创建表
from sqlalchemy.orm import declarative_base              # 创建base类,其他类继承自该类就可以创建表
from sqlalchemy import Column,String,Integer            # Column 字段名 String和Integer是类型

Base = declarative_base()

class Person(Base):
    __tablename__ = "person"
    id = Column(Integer, primary_key=True, autoincrement=True) # primary_key表示主键 autoincrement表示自增长
    name = Column(String(32), unique=True)
    gender = Column(String(32))   
# 这么调用会创建表(下面的create_all只需要执行一次,以后就不需要执行了)
Base.metadata.create_all(engine)
  1. 增、删、改、查
from sqlalchemy.orm import sessionmaker

# ORM操作
Session = sessionmaker(bind = engine)
session = Session()

##########增##########
# 添加一个对象
single_person = Person(name="李雷", gender="男")
session.add(single_person)

# 添加多个对象
session.add_all([
    Person(name="Lily", gender="女"),
    Person(name="Lucy", gender="女")
])

##########删##########
# 删除指定id的人
session.query(Person).filter(Person.id==1).delete()

##########改##########
# 修改操作
modify_person = session.query(Person).filter(Person.name=="Lucy")
if modify_person .count() > 0:
	per = modify_person[0]
	per.name = 'Lilei'
	per.gender = '男'

##########查##########
# 查询id大于0的人
find_person = session.query(Person).filter(Person.id>0)
for p in find_person:
	print(p.id, p.name, p.gender)

# 指定字段查询
find_person = session.query(Person.name, Person.gender).filter(Person.id==1)
print(find_person[0].gender)

# 根据名字查询
find_person = session.query(Person).filter_by(name='Lily')
for p in find_person :
    print(p.id, p.name, p.gender)
    
session.commit()
session.close()

修改表字段(非常重要,调研了好久)

  1. 下载alembic
pip install alembic
  1. 在创建表的python文件目录下执行
alembic init alembic

执行完这条命令之后,会在执行的目录下,生成一个alembic文件夹和alembic.ini文件

  1. 修改env.py(最重要)
    env.py是执行上面一条命令自动生成在alembic文件夹下的文件
    修改内容如下
from sqlalchemy import MetaData
from sqlalchemy import create_engine
from person import Person # 是自己定义的Person类(Person表结构的文件,我的是在person.py文件中定义)

metadata = MetaData() # 创建一个 MetaData 对象,描述你的数据库结构

# 创建连接数据库的engine
engine = create_engine("mysql+pymysql://root:000000@localhost/spider?charset=utf8")
metadata.reflect(bind=engine)  # 从数据库中获取表的结构
tables = dict(metadata.tables)
tables['person'] = Person.__table__
metadata.tables = tables  # 将修改后的 metadata.tables 赋值给 metadata
# 上面都是添加的,最好添加到文件开头,下面还有一个要修改的

把target_metadata = None
修改为target_metadata = metadata
  1. 修改alembic.ini
	sqlalchemy.url = mysql+pymysql://root:000000@localhost/testspider?charset=utf8
  1. 修改person.py中的Person类,添加city字段
	Base = declarative_base()
	
	class Person(Base):
	    __tablename__ = "person"
	    id = Column(Integer, primary_key=True, autoincrement=True) # primary_key表示主键 autoincrement表示自增长
	    name = Column(String(32), unique=True)
	    gender = Column(String(32))   
	    city = Column(String(32))
  1. 执行如下命令,添加修改说明
	alembic revision --autogenerate -m "描述信息,譬如修改了表的哪些字段"
	# 例子alembic revision --autogenerate -m "Person表添加了city字段"
  1. 执行如下命令,这个命令会修改表结构,修改为当前Person表的类型
	alembic upgrade head

至此,表结构修改完毕

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用Tortoise ORM创建MySQL数据库的步骤: 1. 安装Tortoise ORM。可以使用pip安装,命令如下: ``` pip install tortoise-orm ``` 2. 创建一个Python文件,例如“main.py”。 3. 在“main.py”文件中导入Tortoise ORM: ```python from tortoise import Tortoise from tortoise.models import Model from tortoise.fields import CharField, IntField ``` 4. 创建一个模型类,用于定义数据库表格的结构: ```python class User(Model): id = IntField(pk=True) username = CharField(50, unique=True) password = CharField(50) ``` 5. 在“main.py”文件中添加以下代码,用于初始化Tortoise ORM: ```python async def init(): await Tortoise.init( db_url='mysql://username:password@localhost:port/database_name', # 数据库地址 modules={'models': ['main']}, # 模型类所在的模块 ) await Tortoise.generate_schemas() ``` 其中,`username`和`password`是你的MySQL数据库的用户名和密码,`localhost`是你的数据库服务器地址,`port`是你的数据库服务端口,`database_name`是你要连接的数据库名称。 6. 在“main.py”文件中添加以下代码,用于启动Tortoise ORM: ```python if __name__ == '__main__': Tortoise.run_async(init()) ``` 7. 运行“main.py”文件,即可创建数据库并生成相应的表格。 注意:在以上代码中,我们使用MySQL数据库作为示例。如果你要使用其他数据库,需要修改相应的数据库地址和相关配置。同时,你也需要在数据库中创建相应的数据库和用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值