La sexta pregunta de la entrevista:
Parte 1 - Sitio de prueba:
Operar la base de datos MySQL:
- Crear tabla de datos MySQL;
- insertar registros en la tabla;
- Otras operaciones de base de datos.
Parte 2 - Preguntas de la entrevista:
1. Pregunta de la entrevista 1: ¿Cómo crear una tabla de datos MySQL?
2. Pregunta de la entrevista 2: ¿Cómo insertar datos en la tabla MySQL?
3. Pregunta de la entrevista 3: ¿Cómo consultar datos en MySQL?
Parte 3 - Análisis:
Una de las preguntas de la entrevista para crear una tabla de datos MySQL:
# coding=utf-8
# _author__ = 孤寒者
from pymysql import *
def connectDB():
'''
连接本地MySQL数据库,指定连接的库为test库。
:return:
'''
db = connect(host='localhost', user='root', password='123456', port=3306, db='test')
return db
db = connectDB()
print(type(db))
def createTable(db):
c = db.cursor()
try:
c.execute('''create table persons
(id int primary key not null,
name text not null,
age int not null,
address char(100),
salary real);''')
db.commit()
db.commit()
return True
except:
db.rollback()
return False
if createTable(db):
print('create table success')
else:
print('create table failed')
Utilice la herramienta de navegación para ver:
Pregunta de la entrevista 2 insertando datos en la tabla MySQL:
# coding=utf-8
# _author__ = 孤寒者
from pymysql import *
def connectDB():
'''
连接本地MySQL数据库,指定连接的库为test库。
:return:
'''
db = connect(host='localhost', user='root', password='123456', port=3306, db='test')
return db
db = connectDB()
print(type(db))
def insertRecords(db):
cursor = db.cursor()
try:
cursor.execute("delete from persons")
cursor.execute('''
insert into persons(id,name,age,address,salary)
values(1, 'GuHanZhe', 18, 'China', 9999)
''')
cursor.execute('''
insert into persons(id,name,age,address,salary)
values(2, 'XiaoZhang', 55, 'China', 9)
''')
db.commit()
return True
except Exception as e:
print(e)
db.rollback()
return False
if insertRecords(db):
print("成功插入记录")
else:
print("插入记录失败")
Utilice la herramienta de navegación para ver:
Pregunta de entrevista 3: Consulta de datos en MySQL:
# coding=utf-8
# _author__ = 孤寒者
from pymysql import *
def connectDB():
'''
连接本地MySQL数据库,指定连接的库为test库。
:return:
'''
db = connect(host='localhost', user='root', password='123456', port=3306, db='test')
return db
db = connectDB()
def selectRecords(db):
cursor = db.cursor()
sql = 'select name,age,salary from persons order by age desc'
cursor.execute(sql)
results = cursor.fetchall()
print(results)
print(type(results)) # 打印发现是元组类型
selectRecords(db)
db.close()
- Encontramos que el tipo de salida de los datos de la consulta es un tipo de tupla ¿Qué debemos hacer si queremos emparejar el nombre del campo con los datos consultados?
- Aquí necesitamos usar dos funciones muy utilizadas, dict() y zip(), de la siguiente manera:
# coding=utf-8
# _author__ = 孤寒者
import json
from pymysql import *
def connectDB():
'''
连接本地MySQL数据库,指定连接的库为test库。
:return:
'''
db = connect(host='localhost', user='root', password='123456', port=3306, db='test')
return db
db = connectDB()
def selectRecords(db):
cursor = db.cursor()
sql = 'select name,age,salary from persons order by age desc'
cursor.execute(sql)
results = cursor.fetchall()
print(results)
print(type(results)) # 打印发现是元组类型
# 将字段名和查询结果整合在一起
fields = ['name', 'age', 'salary']
records = []
for row in results:
records.append(dict(zip(fields, row)))
return json.dumps(records) # 输出类型为JSON字符串
endresults = selectRecords(db)
print(endresults)
db.close()
Parte 4 - Conclusión:
- Nota: Usamos la API en el módulo pymysql para operar la base de datos MySQL, este módulo debe instalarse por separado ~