Python(14)Python操作MySQLデータベースを学習して添削・変更操作を行う
目次 Python(14)Python操作MySQLデータベースを学習して添削改変操作 を行う 1.MySQL への接続2.挿入データ 三.削除データ 4.更新データ 5.データベースおよびテーブル の作成6.クエリデータ 7.練習 1テーブルを作成し、データ を追加2部門を追加 3部門を削除 4. 部門 を更新 5. 全部門を問い合わせる 6ページング従業員情報
Python(14)Python操作MySQLデータベースを学習して添削・変更操作を行う
一.MySQLへの接続
まず、パッケージが必要です.import pymysql接続でデータベース操作を行うには3ステップかかります.接続mysql カーソル を作成する操作データベース クエリー結果 を取得切断 接続データベース:
カーソルオブジェクトの作成:sql文を実行できます
SQLの実行
クエリー結果の取得
接続を閉じる
二.データの挿入
三.データの削除
四.データの更新
五.データベースとテーブルの作成
六.データの問合せ
七.練習する
1テーブルを作成し、データを追加
2部門を追加
3部門を削除
4.部門の更新
5.すべての部門を問い合わせる
6ページング従業員情報の照会
Python(14)Python操作MySQLデータベースを学習して添削・変更操作を行う
一.MySQLへの接続
まず、パッケージが必要です.import pymysql接続でデータベース操作を行うには3ステップかかります.
# MySQL 6 : , ,
# , ,
# ,
#
con = pymysql.connect(
host='localhost', port=3306,
user='root', password='root',
database='mydb2', charset='utf8')
#
con = pymysql.connect('127.0.0.1', 'root', 'root', 'mydb2')
カーソルオブジェクトの作成:sql文を実行できます
cursor = con.cursor()
SQLの実行
sql = 'select * from star'
cursor.execute(sql) # SQL
クエリー結果の取得
res = cursor.fetchall()
print(res)
接続を閉じる
#
cursor.close()
# mysql
con.close()
二.データの挿入
import pymysql
conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
cursor = conn.cursor()
#
sql = 'insert into person(name, age) values("aa", 20)'
try:
cursor.execute(sql)
#
conn.commit()
except:
#
conn.rollback()
cursor.close()
conn.close()
三.データの削除
import pymysql
conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
cursor = conn.cursor()
#
sql = 'delete from person where id=18'
try:
cursor.execute(sql)
#
conn.commit()
except:
#
conn.rollback()
cursor.close()
conn.close()
四.データの更新
import pymysql
conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
cursor = conn.cursor()
#
sql = 'update person set age=30 where id=20'
try:
cursor.execute(sql)
#
conn.commit()
except:
#
conn.rollback()
cursor.close()
conn.close()
五.データベースとテーブルの作成
#
cursor.execute('create database mydb4 charset=utf8')
#
sql = '''
create table user (
id int primary key auto_increment,
name varchar(30)
)
'''
cursor.execute(sql)
六.データの問合せ
import pymysql
from pymysql.cursors import DictCursor
db = pymysql.connect('localhost', 'root', 'root', 'mydb2')
with db.cursor(cursor=DictCursor) as cursor:
# sql
cursor.execute('select * from student')
#
# res = cursor.fetchall() #
# res = cursor.fetchone() #
# res = cursor.fetchone() #
res = cursor.fetchmany(3) # 3
print(res)
# (('1001', 'zhangsan'), ('1002', 'xiaoming'), ('1003', 'jack'), ('1004', 'tom'), ('1005', 'jerry'), ('1006', 'lucy'))
# DictCursor .
# [{'stuid': '1004', 'stuname': 'tom'}, {'stuid': '1005', 'stuname': 'jerry'}, {'stuid': '1006', 'stuname': 'lucy'}]
db.close()
七.練習する
1テーブルを作成し、データを追加
create table tb_dept
(
dno int not null comment ' ',
dname varchar(10) not null comment ' ',
dloc varchar(20) not null comment ' ',
primary key (dno)
);
insert into tb_dept values
(10, ' ', ' '),
(20, ' ', ' '),
(30, ' ', ' '),
(40, ' ', ' ');
create table tb_emp
(
eno int not null comment ' ',
ename varchar(20) not null comment ' ',
job varchar(20) not null comment ' ',
mgr int comment ' ',
sal int not null comment ' ',
comm int comment ' ',
dno int comment ' ',
primary key (eno)
);
alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno);
insert into tb_emp values
(7800, ' ', ' ', null, 9000, 1200, 20),
(2056, ' ', ' ', 7800, 5000, 1500, 20),
(3088, ' ', ' ', 2056, 3500, 800, 20),
(3211, ' ', ' ', 2056, 3200, null, 20),
(3233, ' ', ' ', 2056, 3400, null, 20),
(3251, ' ', ' ', 2056, 4000, null, 20),
(5566, ' ', ' ', 7800, 4000, 1000, 10),
(5234, ' ', ' ', 5566, 2000, null, 10),
(3344, ' ', ' ', 7800, 3000, 800, 30),
(1359, ' ', ' ', 3344, 1800, 200, 30),
(4466, ' ', ' ', 3344, 2500, null, 30),
(3244, ' ', ' ', 3088, 3200, null, 20),
(3577, ' ', ' ', 5566, 2200, null, 10),
(3588, ' ', ' ', 5566, 2500, null, 10);
2部門を追加
import pymysql
def main():
no = int(input(' : '))
name = input(' : ')
loc = input(' : ')
# 1.
con = pymysql.connect(host='localhost', port=3306,
database='hrs', charset='utf8',
user='yourname', password='yourpass')
try:
# 2.
with con.cursor() as cursor:
# 3. SQL
result = cursor.execute(
'insert into tb_dept values (%s, %s, %s)',
(no, name, loc)
)
if result == 1:
print(' !')
# 4.
con.commit()
except:
#
conn.rollback()
finally:
# 5.
con.close()
if __name__ == '__main__':
main()
3部門を削除
import pymysql
def main():
no = int(input(' : '))
con = pymysql.connect(host='localhost', port=3306,
database='hrs', charset='utf8',
user='yourname', password='yourpass',
autocommit=True)
try:
with con.cursor() as cursor:
result = cursor.execute(
'delete from tb_dept where dno=%s',
(no, )
)
if result == 1:
print(' !')
finally:
con.close()
if __name__ == '__main__':
main()
4.部門の更新
import pymysql
def main():
no = int(input(' : '))
name = input(' : ')
loc = input(' : ')
con = pymysql.connect(host='localhost', port=3306,
database='hrs', charset='utf8',
user='yourname', password='yourpass',
autocommit=True)
try:
with con.cursor() as cursor:
result = cursor.execute(
'update tb_dept set dname=%s, dloc=%s where dno=%s',
(name, loc, no)
)
if result == 1:
print(' !')
finally:
con.close()
if __name__ == '__main__':
main()
5.すべての部門を問い合わせる
import pymysql
from pymysql.cursors import DictCursor
def main():
con = pymysql.connect(host='localhost', port=3306,
database='hrs', charset='utf8',
user='yourname', password='yourpass')
try:
with con.cursor(cursor=DictCursor) as cursor:
cursor.execute('select dno as no, dname as name, dloc as loc from tb_dept')
results = cursor.fetchall()
print(results)
print(' \t \t\t ')
for dept in results:
print(dept['no'], end='\t')
print(dept['name'], end='\t')
print(dept['loc'])
finally:
con.close()
if __name__ == '__main__':
main()
6ページング従業員情報の照会
class Emp(object):
def __init__(self, no, name, job, sal):
self.no = no
self.name = name
self.job = job
self.sal = sal
def __str__(self):
return f'
:{self.no}
:{self.name}
:{self.job}
:{self.sal}
'
def main():
page = int(input(' : '))
size = int(input(' : '))
con = pymysql.connect(host='localhost', port=3306,
database='hrs', charset='utf8',
user='yourname', password='yourpass')
try:
with con.cursor() as cursor:
cursor.execute(
'select eno, ename, job, sal from tb_emp limit %s,%s',
((page - 1) * size, size)
)
results = cursor.fetchall()
for emp_tuple in results:
emp = Emp(*emp_tuple)
print(emp)
finally:
con.close()
if __name__ == '__main__':
main()