ITPub博客

首页 > IT职业 > IT图书 > MySQL与Python的交互学习笔记

MySQL与Python的交互学习笔记

IT图书 作者:neuyu 时间:2021-09-09 10:38:55 0 删除 编辑

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() 查出全部数据




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4550/viewspace-2824519/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Python基础(五)
请登录后发表评论 登录
全部评论

注册时间:2019-08-20

  • 博文量
    94
  • 访问量
    14047