环境:
Python:3.6.6
win系统:64位
首先得安装连接MySQL的包,python2和python3不太一样,python2的包叫“MySQLdb”,python3的包叫“pymysql”。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
python2版本:安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-python ,(Linux平台可以访问:https://pypi.python.org/pypi/MySQL-python)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。
PyMySQL的安装:
- Windows 安装方式:
| pip install pymysql -i https://pypi.douban.com/simple |
| |
| # 验证安装是否成功: |
| import pymysql 或 python -c "import pymysql" |
- Linux 安装方式:
| |
| wget https://pypi.python.org/packages/29/f8/919a28976bf0557b7819fd6935bfd839118aff913407ca58346e14fa6c86/PyMySQL-0.7.11.tar.gz |
| |
| tar xf PyMySQL-0.7.11.tar.gz |
| python36 setup.py install |
注意: 需要连接的数据库,必须已存在才可以连接。
连接MySQL数据库:
- 连接数据库:
| import pymysql |
| db = pymysql.connect(host=locahost, port=port, user=user, password=pwd, database=database) |
- 创建操作游标:
| cursor = db.cursor() |
| cursor = db.cursor(cursor=pymysql.cursors.DictCursor) |
- SQL 查询:
| cursor.execute("Select member_id from member") |
或
| sql = "Select member_id from member where income > %s and dt = %s" |
| data = (1000,'2021-02-08') |
| cursor.execute(sql, data) |
- 获取查询结果:
| re = = cursor.fetchone() |
| re1 = = cursor.fetchall() |
| print(re) |
- 关闭数据库:
- 创建数据库表
| |
| cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") |
| |
| |
| sql = """CREATE TABLE EMPLOYEE ( |
| FIRST_NAME CHAR(20) NOT NULL, |
| LAST_NAME CHAR(20), |
| AGE INT, |
| SEX CHAR(1), |
| INCOME FLOAT )""" |
| cursor.execute(sql) |
- 插入操作:
| sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) |
| VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" |
| try: |
| cursor.execute(sql) |
| db.commit() |
| except: |
| db.rollback() |
或
| sql = "INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) \ |
| VALUES ('%s', '%s', %s, '%s', %s)" % ('Mac', 'Mohan', 20, 'M', 2000) |
| try: |
| cursor.execute(sql) |
| db.commit() |
| except: |
| db.rollback() |
或
| |
| user_id = "test123" |
| password = "password" |
| cursor.execute('insert into Login values( %s, %s)' % (user_id, password)) |
- 数据库更新:
| |
| sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') |
| try: |
| cursor.execute(sql) |
| db.commit() |
| except: |
| db.rollback() |
- 删除操作:
| |
| sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20) |
| try: |
| cursor.execute(sql) |
| db.commit() |
| except: |
| db.rollback() |
- 当数据为多个时:
- executemany 可以将多个数据一次性的插入到数据库中
| cursor.executemany("insert into table(id, name) values(%s, %s)", [(1, 'A'),(2, 'B')]) |
| 或 |
| sql = "insert into table(id, name) values(%s, %s)" |
| args = [(1, 'A'),(2, 'B')] |
| cursor.executemany(sql, args) |
| db.commit() |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 历时 8 年,我冲上开源榜前 8 了!
· 物流快递公司核心技术能力-海量大数据处理技术
· 四大AI编程工具组合测评
· 关于能否用DeepSeek做危险的事情,DeepSeek本身给出了答案
· 几个技巧,教你去除文章的 AI 味!