Python连接MySQL

本文介绍如何使用Python通过pymysql库实现对MySQL数据库的基本操作,包括连接数据库、执行SQL语句进行查询,并通过游标获取数据。此外还介绍了利用SQLAlchemy进行ORM操作的方法,包括表的创建、数据的增删改查等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)import pymysql
2)创建连接:

conn = pymysql.connect(user='root',
                       password='682240',
                       host='localhost',
                       port=3306,
                       db=db_name,
                       charset='utf8'
                       )

3)创建游标:
游标:数据库和python信息交互的中间件

# 创建游标,并选择参数cursor设置返回数据为字典对象
cursor = conn.cursor( cursor = pymysql.cursors.DictCursor )

4)准备sql语句:

sql_select = 'select * from beauty limit %s,%s'

5)执行sql语句:

cursor.execute(sql_select,( offset, page_size ))

execute()的第二个参数为元组类型,作用是传递参数给sql语句中的 %s

6)提交事务:
只是查询数据的话不用commit()

conn.commit()

7)获取数据:

data = cursor.fetchone() # 得到游标中的第一行数据
data2 = cursor.fetchall() # 得到游标中的全部数据

8)将数据迭代出来:

[print(i) for i in data]

9)关闭连接

cursor.close()
conn.close()

ORM的操作,使用SQLAlchemy创建新表:

连接数据库:

from sqlalchemy import create_engine
engine=create_engine('mysql+pymysql://root:682240@localhost:3306/practice?charset=utf8') # 建立连接

创建表:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,Boolean,DateTime
Base = declarative_base() # 创建模型的基类
class News(Base):
    __tablename__ = 'news' # 表名为news
    # 字段
    id = Column(Integer, primary_key=True)
    title = Column(String(200), nullable=False)
    content = Column(String(2000), nullable=False)
    types = Column(String(10), nullable=False)
    image = Column(String(300), )
    author= Column(String(10), )
    view_count = Column(Integer)
    created_at = Column(DateTime)
    is_valid = Column(Boolean)

if __name__ == '__main__':
    News.metadata.create_all(engine)  # 创建表

操作表:

from sqlalchemy.orm import Session
class OrmTest(object):

    def __init__(self):
        self.session = Session(engine)

    def add_one(self):
        new_obj = News(
            title='标题5',
            content='内容5',
            types='happy',
            author='wcc',
            view_count=1,
            is_valid=True,
        )
        self.session.add(new_obj)
        self.session.commit()
        return new_obj

    def get_one(self):
        return self.session.query(News).get(1) # id=1

    def get_more(self):
       return self.session.query(News).filter_by(view_count=1)

    def update_data(self):
        data = self.session.query(News).get(1)
        data.title = '修改后的标题'
        self.session.add(data)
        self.session.commit()

    def delete_data(self):
        data = self.session.query(News).get(2)
        self.session.delete(data)
        self.session.commit()

def main():
    obj = OrmTest()

    # rest = obj.add_one()
    # print(rest.id)

    # obj.update_data()

    # obj.delete_data()

    # rest2 = obj.get_one()
    # if rest2:
    #     print(rest2.id,rest2.title)
    # else:
    #     print("Not exist.")

    data = obj.get_more()
    print('查询出了', data.count(), '条数据')
    for i in data:
        print(i.id, i.title, i.content, i.is_valid)

ORM的操作,使用SQLAlchemy操控已经存在的表

from sqlalchemy import create_engine
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session

‘’‘连接数据库’’’

engine = create_engine('mysql+pymysql://root:682240@localhost/practice')

'''映射到表boys'''
Base = automap_base()
Base.prepare(engine, reflect=True)
Boys = Base.classes.boys

session = Session(engine) # 设置session中间件
# 更新值 
ret = session.query(Boys).get(1)
ret.boyName = '吴长城'
session.add(ret)
session.commit()

ret_more = session.query(Boys).filter(id != 0) # 取值
for data in ret_more:
    print(data.boyName)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值