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()