Python程序员除了Python编程做到烂熟于心之外,也要会一些日常的SQL操作。通常在数据库创建成功之后,就需要创建数据表。
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",passwd="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
检查表是否存在
可以通过使用“SHOW TABLES”语句列出数据库中所有表来检查表是否存在:
检查是否存在,并打印出数据库的表
mycursor.execute("SHOW TABLES")for x in mycursor:print(x)
创建表时,还应该为每条记录创建一个具有唯一键的列。
这可以通过定义PRIMARY KEY来完成。
我们使用语句“INT AUTO_INCREMENT PRIMARY
KEY”,它将为每条记录插入一个唯一的编号。从1开始每新增一个记录增加1。
mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")
如果表已存在,请使用ALTER TABLE关键字:
mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的 flask 扩展。
数据库的其他配置
常用的SQLAlchemy字段类型
常用的SQLAlchemy列选项
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
import datetimeapp = Flask(__name__)
# 设置连接数据库的URL
# 'mysql://MySQL用户名:MySQL密码@127.0.0.1:3306/数据库名称'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # # 设置是否跟踪数据库的修改情况,一般不跟踪
app.config['SQLALCHEMY_DATABASE_URI'] = ('mysql+pymysql://root:root@localhost/flask')
# 数据库操作时是否显示原始SQL语句,一般都是打开的,因为我们后台要日志
app.config['SQLALCHEMY_ECHO'] = True# 实例化orm框架的操作对象,后续数据库操作,都要基于操作对象来完成
db = SQLAlchemy(app) # 实例化SQLAlchemy类# 创建数据表类
# 定义表字段 primary_key:是否为主键 nullable:是否为空值
class Course(db.Model):course_id = db.Column(db.BigInteger,nullable=False,primary_key=True)product_id = db.Column(db.BigInteger,nullable=False)product_type = db.Column(db.Integer, nullable=False)product_name = db.Column(db.String(125), nullable=False)provider = db.Column(db.String(125), nullable=False)score = db.Column(db.Float(2))score_level = db.Column(db.Integer)learner_count = db.Column(db.Integer)lesson_count = db.Column(db.Integer)lector_name = db.Column(db.String(125))original_price = db.Column(db.Float(2))discount_price = db.Column(db.Float(2))discount_rate = db.Column(db.Float(2))img_url = db.Column(db.String(125))big_img_url = db.Column(db.String(125))description = db.Column(db.Text)@app.route('/')
def index():return "逃逸的卡路里"if __name__ == "__main__":app.run(debug=True)
import pymysql
import xlrd# 连接数据库
conn = pymysql.connect(host='localhost', user='root', passwd='root', db='flask', charset='utf8')
cursor = conn.cursor() # 创建游标# 读取excel中内容到数据库
workbook = xlrd.open_workbook('./明日学院Python课程数据2019-09-25.xlsx')
sheet = workbook.sheet_by_index(0) # 根据索引获取sheet
data_list = []
nrows = sheet.nrows # 获取行数
ncols = sheet.ncols # 获取列数# 遍历每一行数据
for i in range(1, nrows):# 在列表中第一个元素为0,方便后面使用insert插入数据row_values = [0]+ sheet.row_values(i)# 如果折扣价不存在,设置为Noneif not row_values[9]:row_values[9] = None# 如果折扣率不存在,设置为Noneif not row_values[10]:row_values[10] = None# 追加到列表中data_list.append(row_values)# 拼接'%s'
val = '%s,'*(ncols+1)
# 批量添加数据
cursor.executemany(f"insert into course values({val[:-1]});", data_list)
conn.commit() # 提交数据
cursor.close() # 关闭游标
conn.close() # 关闭数据库连接
以上就是今天分享的Python通过两种方式创建MySQL数据库表的经验分享,希望对看到的小伙伴有帮助。有问题可以留言讨论。
相关文章推荐:python学习之flask sqlalchemy介绍和使用 表操作增删查改
下一篇:【C进阶】字符串函数