浅谈python连接mysql的几种方式

1.使用pymysql模块(这是python3中连接mysql的模块,python2连接mysql用的是mysqldb,且python3和python2连接方式不兼容)
话不多说,直接上代码

import pymysql
#连接数据库
db=pymysql.connect(host=‘localhost’,user=‘root’, password=‘wzq123’,
database=‘demo’,cursorclass=pymysql.cursors.DictCursor)
#创建游标对象
cursor=db.cursor()
#定义sql语句
# sql='select version()'
#定义查询sql语句
# sql='select * from student’
#定义添加数据
# sql='insert into student(name) value(“老大”)'
sql = “delete from student where name=‘老大’”
#执行sql语句
cursor.execute(sql)
#获取返回的结构
# print(cursor.fetchone())
# print(cursor.fetchone())
#以字典形式返回数据
print(cursor.fetchall())
#返回的条数
print(cursor.rowcount)

如果操作对数据库中的数据产生了影响必须执行提交

db.commit()
#断开连接
cursor.close()
db.close()

2.使用类将原生态的连接方式进行简单封装

import pymysql
class MyDB:
def init(self,h=‘localhost’,u=‘root’,p=None,db=None):
#连接数据库 创建游标对象
self.db=pymysql.connect(host=h,user=u,password=p,database=db,cursorclass=pymysql.cursors.DictCursor)
self.cursor=self.db.cursor()
#做查询
def query(self,sql):
self.cursor.execute(sql)
return self.cursor.fetchall()
#做添加 删除 修改
def change(self,sql):
self.cursor.execute(sql)
self.db.commit()
return self.cursor.rowcount
#析构函数
def del(self):
#关闭数据库连接
self.cursor.close()
self.db.close()
if name==‘main’:
#实例化对象
database=MyDB(p=‘wzq123’,db=‘demo’)
res=database.query(‘select * from student’)
print(res)

3.使用ORM进行连接数据库
此种方式可以使开发者最大程度把思维放在业务逻辑上,而不担心SQL语句方面
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base

类似于 pymysql中的游标

from sqlalchemy.orm import sessionmaker

1.创建连接

**# 数据库类型+数据库操作的包:// 用户名:密码@主机地址/你要操作的数据库

mysql://scott:tiger@hostname/dbname**

db = sqlalchemy.create_engine(‘mysql://root:123123@localhost/sqlorm’)

2.创建基类

base = declarative_base(db)

3.创建类 必须继承基类 创建模型

class User(base):
# 表名
tablename=‘user’
id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(32)) # varchar()
age = sqlalchemy.Column(sqlalchemy.Integer)

class Userinfo(base):
tablename=‘userinfo’
id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
phone = sqlalchemy.Column(sqlalchemy.String(20))

class Shop(base):
tablename=‘shop’
id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(32))

if name == ‘main’:
# 执行数据库迁移 创建表
base.metadata.create_all(db)
# 绑定一个实例
s = sessionmaker(bind=db)
# 创建回话对象 类似于游标
session = s()

# 添加
# user = User(name='hello',age=16)
# session.add(user)
# session.commit()
# session.add_all([
#     User(name='world',age=1),
#     User(name='python',age=28),
#     User(name='PHP', age=30),
# ])
# session.commit()
# 查询
# 查询所有的数据 返回一个列表
# res = session.query(User).all()
# for i in res:
#     print(i.name,i.age)
# 通过主键查询一条数据 返回一个对象
# res = session.query(User).get(1)
# print(res.name,res.age)
# 条件查询 返回的是一个列表
# res = session.query(User).filter_by(name='hello').all()
# print(res)
# res = session.query(User).filter(User.name=='hello').all()
# print(res)
# 修改数据
# res = session.query(User).get(1)
# print(res.name)
# res.name='HELLO'
# session.commit()
# 删除数据
res = session.query(User).get(1)
session.delete(res)
session.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值