pymysql基础

本文介绍了如何使用Python的Flask框架结合MySQL创建动态网页,涉及HTML模板中的占位符使用、数据库连接、SQL查询与操作(包括创建表、插入、查询和更新数据),以及如何通过pymysql库进行Python与MySQL的交互。
摘要由CSDN通过智能技术生成

不连接MySQL的时候HTML永远是静态页面,链接到MySQL后才能动态的改变页面
首先了解动态的页面,需要用到web框架的文件
了解占位符
{{}}
在这个内部写入的是变量名字,例如abc,title等等
可以在render中写入变量名称=???来动态的改变数据
例如  {{title}}
    
from flask import flask,render_template
app=flask(__name__)
@app.route('/name')
def index():
return render_template("index.html",title="名字")
if __name__='__main__':
app.run()

在名为index的html中为
 <h1>{{title}}</h1>
当通过flask运行网页的时候,可以发现h1中的数据改为了"名字"

运行逻辑:
1.找到index.html的文件,读取所有的内容
2.找到内容中占位符的变量,根据render中的数据改变
3.完成替换,呈现给用户

占位符可以使用for循环,使用方法
在需要进行循环更改的代码中
{% for A in B%}
/
{% endfor %}
其中B为数据来源,A为要更改的占位符中的变量名字
例如要更改li中的数据
{%for name in data%}
<ol>
    <li>{{name}}</li>
</ol>
{%endfor%}
在py中的render中需要
def dongtaiwangye():
    datalist=["a","b","c"]
    return render_template("动态网页.html",data=datalist)


sql下载安装不细说

查看已创建的数据库
show databases; //一定要有分号
创建新数据库
create database ???; //??为名字,可以创建完之后在show databases;中查看数据是否正常
删除数据库
drop databse  ???; //如上
进入数据库文件夹
use ??;
查看数据库文件夹下的所有文件
show tables;

创建表文件
create table **//表名称(
    列名称 类型,
    列名称 类型,
    列名称 类型
)
例如:
create table tb1(id int,name varchar(16),age int)default charset=utf8;
这样就创建了一个新的表tb1
在创建表中默认为空,如果需要数据默认不是空表,则
create table tb1(
    id int not null,        //不允许为空
    name varchar(16) null,    //允许为空
    age int
)default charset=utf8;

如果需要设定默认值,则可以
create table tb1(
    id int default 10,        //default 10为默认不输入的时候为10    
    name varchar(16),     
    age int
)default charset=utf8;

还有一个用法,primary key 主键,不允许为空,不允许重复.例如用法:
create table tb1(
    id int primary key,         //不允许为空,不允许重复        
    name varchar(16),     
    age int
)default charset=utf8;
还可以内部自动累加维护
create table tb1(
    id int auto_increment primary key ,    //可以自动累加数据,自动内部维护(自增)
    name varchar(16),     
    age int
)default charset=utf8;
需要检查表是否检查创建正确可以通过
desc 表名称
来查看表是否创建成功并正确.


    常见的sql数据类型
    常见的数组类型
*    tinyint
有符号,取值:-128~128 (默认)
无符号,取值:  0   ~255;
如果需要默认是无符号的,则在数据类型中插入 unsigned
create table tb1(
    id tinyint unsigned
) default charset=utf8;
*    int
有符号,取值:-2147483648~2147483647(默认)
无符号,取值:0            ~4294967295(需要则插入unsigned)
*    bigint
有符号,取值:-9223372036854775808~9223372036854775807(默认)
无符号,取值:0                  ~18446744073709551615
*    float
*    double
*    decimal
decimal可以精准到小数点,注意在使用的时候需要标注
例如
decimal (10,2)
括号内左边的数字代表总共的数字个数,即一共十个数字;右边的数字代表有多少小数点;
左边的数字(m)最大为65,右边的数字(d)最大为30;
如果输入的小数点数字个数超过了限定的数字,会四舍五入进去
例如decimal(10,2)
但是输入的是1.229,最终的保存的为1.23;

    常用的字符串
*    char(定长字符串)          //速度快
char(10) 固定用十个字符串进行存储,哪怕没有十个,在内存中也会显示为十个字符串;
最长字符为255个
写入格式 insert into ???(???) values ("???");
*    varchar(变长字符串)     //较为省空间
varchar (??)
根据真实长度进行数据存储,最大为65535个字节byte
*    text
可容纳65535个字符,一般用来新闻,文章;
*    mediumtext
*    longtext
*    datatime(存储时间)
YYYY-MM-DD HH:MM:SS
*    data(存储日期)
YYYY-MM-DD

插入数据
insert into  ??? (表中变量名,表中变量名,表中变量名) values (???,???),(???,???);
例如
create table tb1(
salary int,
age    int
)default charset=utf8;
可以单独增加一row  
insert into tb1 (salary,age) values(10,10);
也可以同时插入多row
insert into tb1 (salary,age) values (10,10),(20,20);

查看数据
select * from ???;    查看所有数据

删除整个表
drop table ???;

删除数据
delete from 表名;
delete from 表名 where ??;  ??代表数据的特点,例如id,salary等自定义变量,sql会根据数据的设定条件进行删除,例如:
delete from 表名 where id =10;
或者
delete from 表名 where id <=10;
delete from 表名 where id !=10;
delete from 表名 where id in (1,10);

修改数据
update 表名 set 列=值;可以同时修改多条数据,也可以添加限定条件
update 表名 set 列=值 where =条件;
例如:
update table1 set word="123"where id =10;
也可以在原有的数据中进行增加,例如原表中有age 且age=10
update table1 set age = age+10 where id =10;
则最后符合where中的age都增加了10.

查询数据
select *from 表名称;
select 列名称 from 表名称;
select 列名称 from 表名称 where ???;


通过python代码操作MySQL,需要先安装三方库
pip install pymysql

再创建py表后
首先import pymsql
A//这个是自定的链接sql的变量 = pymysql.connect(host="127.0.0.1",port=3306,user="//sql用户名",passwd="//sql密码",charset='utf8',db='unicom')
cursor = A.cursor(cursor=pymysql.cursors.dictcursor)

想要发送指令
cursor.execute("insert into admin(??,??,??) value('??','??','??')")
A.commit() // 命令指令提交

关闭
cursor.close()
A.close()

pymysql内部的占位符
%s
例如:
要输入123,111,222;
原先的方式是
cursor.execute("insert into admin(??,??,??) value('??','??','??')")
A.commit() // 命令指令提交
现在可以通过%s占位符来注入sql中
sql="insert into admin(??,??,??) value(%s,%s,%s)"
cursor.execute(sql,["123","111","222"]
A.commit() // 命令指令提交

也可以通过字典传递数据    
例如同样要传输123 111 222
sql="insert into admin(??,??,??) value(%(a1)s,%(a2)s,%(a3)s)"
cursor.execute(sql,["a1"="123","a2"="111","a3"="222"]
A.commit()

可以写入python的代码来实现实时更新
再链接pymysql的前面输入
while true:
user=input("用户名:")
if user.upper()=='q':
 break
pwd= input("密码:")
mobie= input("手机号:")
sql="insert into admin(??,??,??) value(%(a1)s,%(a2)s,%(a3)s)"
cursor.execute(sql,["a1"=user,"a2"=pwd,"a3"=mobie]
A.commit()

注意!!
所有的execute和commit都需要在和while true之后的同一缩进行,将所有的coon和cursor都缩进到while体中,最后才不会出现返回值等于break要求input的值.


通过pymysql来查询MySQL中的数据

import pymysql //插入pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='Xiaoxiao5501', db='unicom', charset='utf8')   //链接本地mysql
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
//代表创建了一个cursor指向conn的游标,其中 cursor的数据来源于mysql
sql = "select * from admin"  //执行查询语句
cursor.execute(sql)
result = cursor.fetchall()   //必须添加
print(result)                     //打印数据
conn.close()
cursor.close()


也可以通过for循环来依次每行返回数据
import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='Xiaoxiao5501', db='unicom', charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "select * from admin"
cursor.execute(sql)
result = cursor.fetchall()
for row in result:    //for循环
    print(row)
conn.close()
cursor.close()

fetchall是获取全部的sql中的数据,如果指向获取其中一个数据,则可以使用fetchone,则python只会返回最近的一个数据源.

注意!!
执行查询数据的时候不需要使用conn.commit和cursor.commit
只需要执行conn.close和cursor.close

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值