1. 程式人生 > >2018年5月13日筆記

2018年5月13日筆記

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 * from
table_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日筆記