使用Python添加數據

3.1 問題
分別在部門表、員工表和工資表中加入數據
通過SQLAlchemy代碼實現
分別練習每次加入一行數據和每次可加入多行數據
3.2 步驟
實現此案例需要按照如下步驟進行。

步驟一:向部門表添加數據,創建add_department.py文件,添加如下代碼:

1)創建映射類的實例

[root@localhost day10]# vim add_department.py
from dbconn import Departments
hr = Departments(dep_id=1, dep_name='hr')
print(hr.dep_name)
print(hr.dep_id)
測試執行結果:

[root@localhost day10]# python3 add_department.py
hr
1
登錄數據庫查看,部門表中數據爲空,此時,並不會真正在數據庫表中添加記錄

MariaDB [tarena]> select * from departments;
Empty set (0.00 sec)
  1. 想在數據庫中添加數據需完成如下操作,創建會話類
在dbconn.py文件中,添加如下代碼:

通過將sessionmaker與數據庫引擎綁定,創建會話類Session

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)    

3)添加新對象

在add_department.py文件中添加如下代碼:

from dbconn import Departments, Session
session = Session()    #創建會話類實例
session.add(hr)    #向實例綁定的數據庫添加數據
session.commit()    #將數據提交到實例對應數據庫
session.close()    #關閉session類
測試執行結果:

[root@localhost day10]# python3 add_department.py
登錄數據庫查看部門表中數據

MariaDB [tarena]> select * from departments;
+--------+----------+
| dep_id | dep_name |
+--------+----------+
|      1 |  hr       |
+--------+----------+
1 row in set (0.01 sec)
數據成功添加

4)批量添加新數據

在add_department.py文件中添加如下代碼:

ops = Departments(dep_id=2, dep_name='operations')
dev = Departments(dep_id=3, dep_name='development')
finance = Departments(dep_id=4, dep_name='財務部')
deps = [ops, dev]
session = Session()
session.add_all(deps)        
session.add(finance)
session.commit()
session.close()
此時注意:

添加過的數據不要再添加,即將session.add(hr)註釋掉。

如果文件中有中文,注意在dbconn.py文件中,將engine的參數修改爲如下代碼:

engine=create_engine(
'mysql+pymysql://root:tedu.cn@localhost/tarena?charset=uU8',
    encoding='uU8',
    echo=True
)    
測試執行結果:

[root@localhost day10]# python3 add_department.py
登錄數據庫查看部門表中數據

MariaDB [tarena]> select * from departments;
+--------+-------------+
| dep_id | dep_name    |
+--------+-------------+
|      3 | development  |
|      1 | hr           |
|      2 | operations   |
|      4 | 財務部        |
+--------+-------------+
4 rows in set (0.00 sec)
數據成功添加

步驟二:向員工表批量添加數據,創建add_employees.py文件,添加如下代碼:

from dbconn import Employees, Session
wj = Employees(
    emp_id=1,name='王俊',gender='男',phone='15678789090',email='[email protected]',    dep_id=3
)
wwc = Employees(
    emp_id=2,name='吳偉超',gender='男',phone='13499887755',email='[email protected]',    dep_id=3
)
dzj = Employees(
    emp_id=3, name='董枝俊', gender='男', phone='18900998877', email='[email protected]', dep_id=3
)
ltd = Employees(
        emp_id=4, name='李通達', gender='男', phone='13378904567', email='[email protected]', dep_id=2)
wxy = Employees(
        emp_id=5, name='王秀燕', gender='女', phone='15098765432', email='[email protected]', dep_id=2)
gq = Employees(
        emp_id=6, name='高琦', gender='女', phone='15876543212', email='[email protected]', dep_id=1)
wzf = Employees(
         emp_id=7, name='王召飛', gender='男', phone='15609871234', email='[email protected]', dep_id=1)
sy = Employees(
        emp_id=8, name='孫燕', gender='女', phone='18567895435', email='[email protected]', dep_id=4)
gpf = Employees(
        emp_id=9, name='高鵬飛', gender='男', phone='13566889900', email='[email protected]', dep_id=2)
emps = [wj, wwc, dzj, ltd, wxy, gq, wzf, sy, gpf]
session = Session()
session.add_all(emps)
session.commit()
session.close()
測試執行結果:

[root@localhost day10]# python3 add_employees.py
登錄數據庫查看部門表中數據

MariaDB [tarena]> select * from employees;
+--------+-----------+--------+-------------+---------------+--------+
| emp_id | name      | gender | phone       | email         | dep_id |
+--------+-----------+--------+-------------+---------------+--------+
|      1  |    王俊    |   男   | 15678789090 | [email protected]    |      3 |
|      2  |   吳偉超   |   男   | 13499887755 | [email protected]    |      3 |
|      3  |   董枝俊   |   男   | 18900998877 | [email protected]   |      3 |
|      4  |   李通達   |   男   | 13378904567 | [email protected]   |      2 |
|      5  |   王秀燕   |   女   | 15098765432 | [email protected]   |      2 |
|      6  |    高琦    |   女   | 15876543212 | [email protected] |      1 |
|      7  |   王召飛   |   男   | 15609871234 | [email protected]  |      1 |
|      8  |    孫燕    |   女   | 18567895435 | [email protected]    |      4 |
|      9  |   高鵬飛   |   男   | 13566889900 | [email protected]   |      2 |
+--------+-----------+--------+-------------+---------------+--------+
9 rows in set (0.00 sec)
數據成功添加

步驟三:向工資表添加數據,創建add_ salary.py文件,添加如下代碼:

from dbconn import Salary, Session
jan2018_1 = Salary(date='2018-01-10', emp_id=1, basic=10000, awards=2000)
jan2018_2 = Salary(date='2018-01-10', emp_id=2, basic=11000, awards=1500)
jan2018_3 = Salary(date='2018-01-10', emp_id=3, basic=11000, awards=2200)
jan2018_4 = Salary(date='2018-01-10', emp_id=4, basic=11000, awards=3000)
jan2018_5 = Salary(date='2018-01-10', emp_id=1, basic=13000, awards=2000)
jan2018_6 = Salary(date='2018-01-10', emp_id=6, basic=15000, awards=3000)
jan2018_7 = Salary(date='2018-01-10', emp_id=7, basic=9000, awards=3000)
jan2018_8 = Salary(date='2018-01-10', emp_id=8, basic=13000, awards=2000)
jan2018_9 = Salary(date='2018-01-10', emp_id=9, basic=13000, awards=1500)
session = Session()
sals = [jan2018_1, jan2018_2, jan2018_3,jan2018_4, jan2018_5, jan2018_6, jan2018_7, jan2018_8, jan2018_9]
session.add_all(sals)
session.commit()
session.close()
測試執行結果:

[root@localhost day10]# python3 add_ salary.py
登錄數據庫查看部門表中數據

MariaDB [tarena]> select * from salary;
+---------+------------+--------+-------+--------+
| auto_id | date       | emp_id | basic | awards |
+---------+------------+--------+-------+--------+
|       1 | 2018-01-10 |      1 | 10000 |   2000 |
|       2 | 2018-01-10 |      2 | 11000 |   1500 |
|       3 | 2018-01-10 |      3 | 11000 |   2200 |
|       4 | 2018-01-10 |      4 | 11000 |   3000 |
|       5 | 2018-01-10 |      1 | 13000 |   2000 |
|       6 | 2018-01-10 |      6 | 15000 |   3000 |
|       7 | 2018-01-10 |      7 |  9000 |   3000 |
|       8 | 2018-01-10 |      8 | 13000 |   2000 |
|       9 | 2018-01-10 |      9 | 13000 |   1500 |
+---------+------------+--------+-------+--------+
9 rows in set (0.00 sec)
數據成功添加
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章