准备工作
打开mysql数据库服务
打开cmd后,进入安装位置(可以通过右键打开):
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
开启服务:
mysql -u root -p password # 用户名,密码
建库建表
create database news;
use news;
create table NEWS(title varchar(100),url varchar(200), date varchar(20));
查看数据库:
show databases;
查看表结构:
show columns from NEWS;
解决2059问题
https://www.cnblogs.com/yongqi-wang/p/agsgfs.html
使用
连接数据库
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取一条数据
data = cursor.fetchone()
print "Database version : %s " % data
# 关闭数据库连接
db.close()
创建数据库表
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 创建数据表SQL语句
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 关闭数据库连接
db.close()
插入数据
# SQL 插入语句
for i in range(len(title_list)):
sql = "INSERT INTO NEWS(title,url,date) \
VALUES('%s', '%s', '%s');" % (title_list[i],url_list[i],date_list[i])
print(sql)
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# Rollback in case there is any error
db.rollback()
print("error!")
- 注意
VALUES('%s', '%s', '%s')
这里一定要带引号,否则插入不成功 - 若不提交(commit),数据库内没有commit的事务可能会被rollback。
查询取数据
在上文插入之后,直接可以继续查看该表的结果:
sql = "SELECT * FROM NEWS"
cursor.execute(sql)
results=cursor.fetchall()
print(results)
SQL语句
修改表结构
alter table news modify column title varchar(200);
修改后:
备份和恢复
备份:
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqldump -uroot -p news > f:/simudb1.sql # 非明文,仅数据库
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqldump -uroot -p123456 news news > f:/simuback.sql #dbname tablename
恢复:
mysql -uroot -p news < simudb1.sql