2018年5月13日筆記
阿新 • • 發佈:2018-05-15
class leg 刪除 pass ota pan where ide maker
- SQL語句復習
創建一個庫 create database DB_name; 授權一個用戶 grant all privileges on *.* to ‘user1‘@‘%‘ identified by ‘qwe123‘; 創建表 create table table_name(column_name type not null); 查詢 select * from tabel_name where condition1 and condition2; 增加 insert into table_name (id, name, age, sex, grander) values (1, ‘ling‘, 25, ‘M‘, 99), (2, ‘ajing‘, 45, ‘F‘, 88); 改 update table_name set column_name=xx where condition 刪除 delete from table_name where condition drop table table_name 聯合查詢 select a.id, b.name from A a join B b on a.id=b.tid 創建索引 create index idx_庫名_表名_列名1_列名2 (列名1, 列名2) 查看sql是否走索引 explain select * fromtable_name where column_name==‘xxx‘
- 連接數據庫復習
1 # python2使用mysqldb 2 # python3使用pymysql 3 4 import pymysql 5 6 # 1.創建連接connection和遊標cursor 7 conn = pymysql.connect(host="192.168.2.1", port=3306, user="root", passwd="qwe123", db="test") 8 cus = conn.cursor() 9 10 # 2.執行SQL 11 sql = "select * from Student;" 12 cus.execute(sql) 13 cus.fetchone() 14 cus.fetchmany(size=n) 15 cus.fetchall() 16 17 # 3.關閉遊標cursor和連接connection 18 cus.close() 19 conn.close()
- SQLAlchemy復習
1 # 導入 2 from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String 3 from sqlalchemy.orm import sessionmaker 4 from sqlalchemy.ext.declarative import declarative_base 5 6 # 1.創建引擎engine,‘數據庫類型+數據庫驅動名稱://用戶名:口令@機器地址:端口號/數據庫名‘ 7 engine = create_engine("mysql+pymysql://username:passwd@hostname:port/db_name") 8 9 # 2.創建會話session 10 DBsession = sessionmaker(bind=engine) 11 session = DBsession() 12 13 # 3.創建表 14 metadata = MetaData(engine) 15 student = Table("Student", metadata, 16 Column("id", Integer, primary_key=True), 17 Column("name", String(50)) 18 ) 19 metadata.reate_all() # 若不存在同名Table,則創建 20 21 # 4.增加 22 # 4.1 創建一個模型類 23 Base =declarative_base() # 創建對象的基類 24 class Student(Base): # 定義一個Student類來表示一張student表,多個表就定義多個class 25 __tablename__ = "student" 26 id = Column(Integer, primary_key=True) 27 name = Column(String(50)) 28 # 4.2 導入模型類,實例化該類 29 student1 = Student(id=1001, name="Karl") # !!! 別忘了"形參=XXX" !!! 30 student2 = Student(id=1002, name="Tom") 31 student3 = Student(id=1003, name="Jack") 32 # 4.3 通過add實例來添加記錄 33 session.add(student1) 34 session.add_all([student2, student3]) 35 36 # 5.查詢 37 38 # 5.1 filter 與 filer_by 的區別 39 40 # filter可以使用> <等,表示列必須用 表.列 的形式,等於用 ==. 41 session.query(Student).filter(Student.id>1000) 42 # filter不支持組合查詢 43 session.query(Student).filter(Student.id>1000).filter(name=="Tom") 44 45 # filter_by可直接寫列,不支持> <,等於用 == 46 # filter_by可支持組合查詢 47 session.query(Student).filter(id==1000 and name=="Jack") 48 49 # 5.2 模糊查詢 50 # SQL語句的模糊查詢 51 #select * from student where name like ‘%ling%‘; 52 # python語句的模糊查詢 53 session.query(Student).filter(Student.name.like("%ling%")) 54 55 # 5.3 獲取數據 56 one() tuple 57 all() list 58 # 在查詢中,不寫one()或all(),獲取的結果就是SQL語句 59 60 # 6.更新 61 # 6.1 先查出來 62 std1 = session.query(Student).filter(Student.id>1000) 63 # 6.2 更新類的屬性值 64 std1.name = "testname" 65 # 6.3 commit提交下 66 session.commit() 67 68 # 7.刪除 69 # 先查出來,然後調用delete()方法,左後commit() 70 session.delete(std1) 71 72 # 8.統計、分組、排序 73 # 8.1 統計 74 session.query().filter().count() 75 session.query().filter().groupby() 76 session.query().filter().orderby(student.id.desc)
- 將對數據庫的操作進行封裝
1 from sqlalchemy import create_engine, Integer, String, Column 2 from sqlalchemy.orm import sessionmaker 3 from sqlalchemy.ext.declarative import declarative_base 4 5 6 7 Base = declarative_base() 8 class Student(Base): 9 __tablename__ = ‘student‘ 10 id = Column(Integer, primary_key=True) 11 name = Column(String(50)) 12 age = Column(Integer) 13 address = Column(String(100)) 14 15 # 增 16 def insert(session): 17 student1 = Student(id=1004, name=‘ling‘, age=28, address=‘shanxi‘) 18 session.add(student1) 19 session.commit() 20 21 # 刪 22 def delete(session): 23 session.query(Student).filter(Student.id == 1001).delete() 24 session.commit() 25 26 # 改 27 def update(session): 28 student1 = session.query(Student).filter(Student.id == 1001).one() 29 student1.name = ‘test123‘ 30 session.commit() 31 student2 = session.query(Student).filter(Student.id == 1001).one() 32 print(student2.name) 33 34 # 統計 35 def count(session): 36 numnber = session.query(Student).filter().count() 37 print("total student is {0}".format(numnber)) 38 39 # 分組 40 def groupBy(session): 41 groupByAge = session.query(Student).group_by(Student.age).all() 42 print(groupByAge) 43 for i in groupByAge: 44 print(i.id, i.name, i.age, i.address) 45 46 # 排序 47 def orderBy(session): 48 orderByAge = session.query(Student).order_by(Student.age.desc()).all() 49 for x in orderByAge: 50 print(x.id, x.name, x.age, x.address) 51 52 53 54 def main(): 55 engine = create_engine(‘mysql+pymysql://xiang:[email protected]/sqlalchemy‘) 56 DBsession = sessionmaker(bind=engine) 57 session = DBsession() 58 # insert(session) 59 # update(session) 60 # delete(session) 61 # count(session) 62 # groupBy(session) 63 orderBy(session) 64 65 66 if __name__ == ‘__main__‘: 67 main()
2018年5月13日筆記