廖雪峰Python学习笔记day16

学习笔记day15

# python study day16

# python内置了SQLite3数据库,可以直接使用. SQLite是一种嵌入型数据库
# import sqlite3 # 导入SQLite驱动
# # 连接到SQLite数据库
# # 数据库文件是test.db
# # 如果文件不存在,会自动在当前目录创建
# conn = sqlite3.connect('test.db')
# cursor = conn.cursor() # 创建一个cursor游标
# # 执行一条SQL语句,建表
# cursor.execute('create table user(id primary key, name varchar(20))')
# cursor.execute('insert into user(id, name) values(\'1\',\'Alice\')')
# cursor.rowcount # 获取影响行数
# cursor.close() # 关闭cursor
# conn.commit() # 提交事务
# conn.close() # 关闭连接

# # 查询数据库
# conn = sqlite3.connect('test.db')
# cursor = conn.cursor()
# cursor.execute('select * from user where id = ?', ('1',))
# values = cursor.fetchall() # 获取结果集
# print(values) # >>> [('1', 'Alice')]
# # 结果集是一个list,每个元素都是一个tuple,对应一行记录。
# cursor.close()
# conn.close()
# 
# import os, sqlite3
# db_file = os.path.join(os.path.dirname('__file__'), 'test.db')
# if os.path.isfile(db_file):
#     os.remove(db_file)

# # 初始数据:
# conn = sqlite3.connect(db_file)
# cursor = conn.cursor()
# cursor.execute('create table users(id varchar(20) primary key, name varchar(20), score int)')
# cursor.execute(r"insert into users values ('A-001', 'Adam', 95)")
# cursor.execute(r"insert into users values ('A-002', 'Bart', 62)")
# cursor.execute(r"insert into users values ('A-003', 'Lisa', 78)")
# cursor.close()
# conn.commit()
# conn.close()

# def get_score_in(low, high):
#     try:
#         conn = sqlite3.connect('test.db')
#         cursor = conn.cursor()
#         cursor.execute('select name from (select * from users where score between ? and ? order by score)a', (low, high))
#         values = cursor.fetchall()
#     except:
#         return []
#     finally:
#         cursor.close()
#         conn.close()
#         names = []
#         for per in values:
#             names.append(per[0])
#         return names
# # 测试:
# assert get_score_in(80, 95) == ['Adam'], get_score_in(80, 95)
# assert get_score_in(60, 80) == ['Bart', 'Lisa'], get_score_in(60, 80)
# assert get_score_in(60, 100) == ['Bart', 'Lisa', 'Adam'], get_score_in(60, 100)
# print('Pass')

# Mysql 数据库安装驱动后, 使用和SQLite一致
# import mysql.connector
# conn = mysql.connector.connect(user='root', password='root123', database='test')
# cursor = conn.cursor()
# cursor.execute('craete table user(id varchar(20),name varchar(20))')
# cursor.execute('insert into user(id, name) values(\'1\', \'Alice\')')
# cursor.rowcount()
# conn.commit()
# cursor.close()
# cursor = conn.cursor()
# cursor.execute('select * from user where id= %s', ('1',)) # Mysql的占位符是%s
# values = cursor.fetchall()
# print(values)
# cursor.close()
# conn.close()

# AQLAlchemy ORM(Object-Relational-Mapping)持久层框架
# from sqlalchemy import Column, String, create_engine
# from sqlalchemy.orm import sessionmaker
# from sqlalchemy.ext.declarative import declarative_base
# 
# Base = declarative_base() # 创建对象基类
# 
# class User(Base):
#     __tablename__ = 'user' # 表名
#     id = Column(String(20), primary_key=True) # 表字段结构
#     userName = Column(String(20))
# 
# # 初始化数据库连接:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'
# engine = create_engine('mysql+mysqlconnector://root:root123@localhost:3306/test')
# DBSession = sessionmaker(bind=engine) # 创建DBSession类型    
# # 添加记录  
# session = DBSession() # 创建session对象
# new_user = User(id='11', userName='Bob') # 创建新User对象
# session.add(new_user) # 添加到session
# session.commit() # 提交保存
# session.close()
# # 查询记录
# session = DBSession()
# # 创建Query查询,filter是where条件,调用one()返回唯一行,调用all()返回所有行
# user = session.query(User).filter(User.id=='11').one()
# print('type', type(user))
# print('name', user.name) 
# session.close()  
# 一对多关系
# class User(Base):
#     __tablename__ = 'user'
#     id = Column(String(20), primary_key)
#     name = Column(String(20))
#     books = relationship('Book') # 一对多,一个用户多本书
# class Book(Base):
#     __tablename__ = 'book'
#     id = Column(String(20), primary_key)
#     name = Column(String(20))
#     user_id = Column(String(20), ForeignKey('user.id')) # 外键关联id

在这里插入图片描述
学习笔记day17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值