python mysql in语句_基于Python的mysql语句入门学习笔记

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。现在记录一下自己学习过程

1、创建连接mysql:

conn = pymysql.connect(host="localhost",port=3306(端口名),user='你的用户名',password="你的密码")

mycursor = conn.cursor()#生成游标对象

此时可以开始使用SQL语句查询数据库了

2、创建数据库:CREATE DATABASE 数据库名

mycursor.execute("CREATE DATABASE mydatabase")

3、创建表:CREATE TABLE table_name (column_name column_type)

mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")

检查表是否存在:

mycursor.execute("SHOW TABLES")

for x in mycursor:

print(x)

创建表时,应该创建一个主键字段,主键唯一的标识一行记录,语句为:INT AUTO_INCREMENT PRIMARY KEY

4、导入数据:load data infile

load data [low_priority] [local] infile 'file_name txt' [replace | ignore]

into table tbl_name

[fields

[terminated by't']

[OPTIONALLY] enclosed by '']

[escaped by'\' ]]

[lines terminated by'n']

[ignore number lines]

[(col_name, )]

load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用load data infile,在服务器主机上你必须有file的权限。

1)如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:

load data low_priority infile "/home/mark/data sql" into table Orders;

2)如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。

3)replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。例如:

load data low_priority infile "/home/mark/data sql" replace into table Orders;

4)分隔符

(1) fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:

terminated by分隔符:意思是以什么字符作为分隔符

enclosed by字段括起字符

escaped by转义字符

terminated by描述字段的分隔符,默认情况下是tab字符(\t)

enclosed by描述的是字段的括起字符。

escaped by描述的转义字符。默认的是反斜杠(backslash:\ )

例如:load data infile "/home/mark/Orders txt" replace into table Orders fields terminated by',' enclosed by '"';

(2)lines 关键字指定了每条记录的分隔符默认为'\n'即为换行符

如果两个字段都指定了那fields必须在lines之前。如果不指定fields关键字缺省值与如果你这样写的相同: fields terminated by'\t' enclosed by ’ '' ‘ escaped by'\\'

如果你不指定一个lines子句,缺省值与如果你这样写的相同: lines terminated by'\n'

例如:load data infile "/jiaoben/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';

5)load data infile 可以按指定的列把文件导入到数据库中。 当我们要把数据的一部分内容导入的时候,,需要加入一些栏目(列/字段/field)到MySQL数据库中,以适应一些额外的需要。比方说,我们要从Access数据库升级到MySQL数据库的时候

下面的例子显示了如何向指定的栏目(field)中导入数据:

load data infile "/home/Order txt" into table Orders(Order_Number, Order_Date, Customer_ID);

6)当在服务器主机上寻找文件时,服务器使用下列规则:

(1)如果给出一个绝对路径名,服务器使用该路径名。

(2)如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。

(3)如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。

例如: /myfile txt”给出的文件是从服务器的数据目录读取,而作为“myfile txt”给出的一个文件是从当前数据库的数据库目录下读取。

5、插入表:INSERT INTO 表名称

插入1行:

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

val = ("John", "Highway 21")

mycursor.execute(sql, val)

conn.commit() 提交修改语句,否则修改不会生效

print(mycursor.rowcount, "条记录已插入")

插入多行:executemany(),该方法的第二个参数是一个元组列表,包含了要插入的数据

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

val = [

('Peter', 'Lowstreet 4'),

('Amy', 'Apple st 652'),

('Hannah', 'Mountain 21'),

('Michael', 'Valley 345'),

('Sandy', 'Ocean blvd 2'),

('Betty', 'Green Grass 1'),

('Richard', 'Sky st 331'),

('Susan', 'One way 98'),

('Vicky', 'Yellow Garden 2'),

('Ben', 'Park Lane 38'),

('William', 'Central st 954'),

('Chuck', 'Main Road 989'),

('Viola', 'Sideway 1633')

]

mycursor.executemany(sql, val)

conn.commit()

print(mycursor.rowcount, " 条已经插入")

6、从表中选择数据:select,eg:SELECT * FROM customers(表名)

7、筛选数据:WHERE,eg:SELECT * FROM customers WHERE address ='Park Lane 38

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值