内容简介:使用PyMySQL操作MySQL数据库
安装PyMySQL
PyMySQL是一个 Python 编写的 MySQL 驱动程序,让我们可以用Python语言操作MySQL数据库。
首先,使用pip安装PyMySQL。
pip install PyMySQL
使用PyMySQL
简单使用
如果有JDBC等其他语言的数据库学习经验的话,使用PyMySQL非常简单。下面是一个完整的MySQL增删查(没有改)的例子。
import pymysql import datetime host = 'localhost' username = 'root' password = '12345678' db_name = 'test' create_table_sql = """\ CREATE TABLE fuck( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE , nickname VARCHAR(255) NOT NULL , birthday DATE ) """ insert_table_sql = """\ INSERT INTO fuck(username,nickname,birthday) VALUES('{username}','{nickname}','{birthday}') """ query_table_sql = """\ SELECT id,username,nickname,birthday FROM fuck """ delete_table_sql = """\ DELETE FROM fuck """ drop_table_sql = """\ DROP TABLE fuck """ connection = pymysql.connect(host=host, user=username, password=password, charset='utf8mb4', db=db_name) try: with connection.cursor() as cursor: print('--------------新建表--------------') cursor.execute(create_table_sql) connection.commit() print('--------------插入数据--------------') cursor.execute( insert_table_sql.format(username='yitian', nickname='易天', birthday=datetime.date.today())) cursor.execute( insert_table_sql.format(username='zhang3', nickname='张三', birthday=datetime.date.today())) cursor.execute( insert_table_sql.format(username='li4', nickname='李四', birthday=datetime.date.today())) cursor.execute( insert_table_sql.format(username='wang5', nickname='王五', birthday=datetime.date.today())) connection.commit() print('--------------查询数据--------------') cursor.execute(query_table_sql) results = cursor.fetchall() print(f'id\tname\tnickname\tbirthday') for row in results: print(row[0], row[1], row[2], row[3], sep='\t') print('--------------清除数据--------------') cursor.execute(delete_table_sql) connection.commit() print('--------------删除表--------------') cursor.execute(drop_table_sql) connection.commit() finally: connection.close()
如果需要更详细的资料,请查阅 pymysql文档 或者其他资料。
防止 SQL 注入
在上面的例子中直接拼接字符串,这不是好办法,因为可能存在SQL注入攻击,更好的解决办法是使用类库提供的函数来传参。所以上面的代码也需要稍作修改。
首先,将带参数的SQL语句改写。
insert_table_sql = """\ INSERT INTO fuck(username,nickname,birthday) VALUES(%s,%s,%s) """
然后将相应的执行代码也进行修改,execute函数接受一个元组作为SQL参数。所以代码改写为这样。
print('--------------插入数据--------------') cursor.execute(insert_table_sql, ('yitian', '易天', datetime.date.today())) cursor.execute(insert_table_sql, ('zhang3', '张三', datetime.date.today())) cursor.execute(insert_table_sql, ('li4', '李四', datetime.date.today())) cursor.execute(insert_table_sql, ('wang5', '王五', datetime.date.today())) connection.commit()
这样,SQL操作就更安全了。如果需要更详细的文档参考 PyMySQL文档
吧。不过好像这些SQL数据库的实现还不太一样,PyMySQL的参数占位符使用 %s
这样的C格式化符,而Python自带的 sqlite 3模块的占位符好像是 ?
。因此在使用其他数据库的时候还是仔细阅读文档吧。
本文永久更新链接地址 : http://www.linuxidc.com/Linux/2017-06/144690.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
A Philosophy of Software Design
John Ousterhout / Yaknyam Press / 2018-4-6 / GBP 14.21
This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first ......一起来看看 《A Philosophy of Software Design》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
CSS 压缩/解压工具
在线压缩/解压 CSS 代码