前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python操作MySQL数据库

Python操作MySQL数据库

作者头像
周小董
发布2019-03-25 14:50:27
1.6K0
发布2019-03-25 14:50:27
举报
文章被收录于专栏:python前行者python前行者

在MYSQL中,运行INSERT INTO 插入语句中的字段是否一定要把该表的字段全部填上?

例如表tab_name有(col1,col2,col3,col4)4个字段。 只填你需要添的,就要把列名写上values后对应列值, 语法:insert into tab_name (col1,col2,col3) values(val1,val2,val3);

如果你想省略列名,那就要把所有字段的值都填上了, 语法:insert into tab_name values(val1,val2,val3,val4);


MySQL数据库,插入重复数据

代码语言:javascript
复制
sql = "INSERT  INTO test_c(id,name,sex)values(%s,%s,%s)"  
param = (1,'AJ','MAN')  
n = cursor.execute(sql,param)  
db.commit() 

当我们使用普通的 “INSERT INTO” 插入数据,如果数据有重复就会有报错: 提示的是键值重复

代码语言:javascript
复制
Traceback (most recent call last):  
  File "D:/python/tongbu_py/test.py", line 14, in <module>  
    n = cursor.execute(sql,param)  
  File "D:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute  
    self.errorhandler(self, exc, value)  
  File "D:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler  
    raise errorclass, errorvalue  
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry '1-AJ-MAN' for key 'PRIMARY'")  

我们可以使用另外2个传入方法: ”INSERT IGNORE INTO 和 REPLACE INTO“

INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的

REPLACE INTO 如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。


MySQL 创建数据表

创建MySQL数据表需要以下信息:

  • 表名
  • 表字段名
  • 定义每个表字段

语法

以下为创建MySQL数据表的SQL通用语法:

代码语言:javascript
复制
CREATE TABLE table_name (column_name column_type);

以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

实例解析:

如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。

AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。

PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。

ENGINE 设置存储引擎,CHARSET 设置编码。

通过命令提示符创建表

通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表。

实例

以下为创建数据表 runoob_tbl 实例:

代码语言:javascript
复制
root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_tbl(
   -> runoob_id INT NOT NULL AUTO_INCREMENT,
   -> runoob_title VARCHAR(100) NOT NULL,
   -> runoob_author VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( runoob_id )
   -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>

注意:MySQL命令终止符为分号 (;) 。

创建 MySql 的表时,表名和字段名外面的符号 ` 不是单引号,而是英文输入法状态下的反单引号,也就是键盘左上角 esc 按键下面的那一个 ~ 按键,坑惨了。 反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年07月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL数据库,插入重复数据
  • MySQL 创建数据表
    • 语法
      • 实例解析:
        • 通过命令提示符创建表
          • 实例
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档