为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL与Python的交互学习笔记

标签:
MySQL

MySQL Connector

官方的驱动模块,兼容性好

创建连接

1、import mysql.connector

    con=mysql.connector.connect(

    host="localhost",port="3306",

    user = 'root',password="abc1",

    database="demo");

2、import mysql.connector

    config={

    "host":"localhost",

    "port":3306,

    "user" :'root',

    "password":"abc1",

    "database":"demo"};

con=mysql.connector.connect(**config)

利用游标来执行SQL语句,而查询的结果集也保存在游标中

cursor=con.cursor()

cursor.execute(sql语句)

SQL语句是解释型语言,拼接SQL语句的时候,容易被注入恶意的SQL语句。

SQL预编译机制

预编译就是将数据库提前把SQL语句编译成二进制,反复执行童一条SQL语句的效率就会提高。

SQL语句被编译后,传入参数都被当做字符串处理,数据库不会解释注入SQL语句。

防注入

sql="SELECT COUNT(*) FROM t_user WHERE username=%s AND AES_DECRYPT(UNHEX(password),‘helloword’)=%s";

cursor.execute(sql,(username,password));

print(cursor.fetchone()[0])

事务控制

con.start_transaction([事务的隔离级别])

con.commit()

con.rollback()

异常处理

try:

    ......

except Exception as e:

    ..[con.rollback()]

finally:

    if "con" in dir():con.close()

数据库最昂贵的是数据库连接,并发尤为突出

TCP连接需要三次握手,四次回首,然后数据库还要验证用户信息。

数据库连接池:预先创建一些数据库连接,然后缓存,避免程序语言反复创建

import mysql.connector.pooling

config={...}

pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=10)

con=pool.get_connection()

EXECUTEMANY()函数可以反复执行一条SQL语句。

cursor.executemany(sql,data)

create table t_emp_new AS (select * from t_emp)复制数据表

create table t_emp_new like t_emp 复制数据表结构(内容空)

cursor.fetchall() 查出全部数据




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消