接下来。装逼开始....
mysql插入数据
语法:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
INSERT INTO test_user (NAME, mobile, address)
VALUES
(
'张三三',
18847474549,
'浙江杭州'
)
以values分割,上面的括号里面是数据库中的字段名称;下面括号的字段是对相应字段的值
示例1:通过命令行插入数据
root@7c6316b19d80:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 66
Server version: 5.6.51 MySQL Community Server (GPL)
mysql> sue testing;
Database changed
mysql> insert into test_user(name, mobile, address) values ('python', 18856565858, 'Hangzhou');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_user(name, mobile, address) values ('java', 17756565858, 'Hangzhou');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_user(name, mobile, address) values ('php', 15556565858, 'Hangzhou');
Query OK, 1 row affected (0.01 sec)
mysql> insert into test_user(name, mobile, address)
-> values
-> ('c#', 17748484142, 'Hangzhou');
Query OK, 1 row affected (0.00 sec)
注意点:
往数据库中插入了四条数据,均没添加id字段,是因为id设置了自增属性(AUTO_INCREMENT)
“ - > ” 是换行操作,sql语句很长时回车换行输入,切记回车别加分号,不然就直接执行了...
示例2:使用python脚本插入数据
import pymysql
# 连接数据库
conn = pymysql.connect(host="8.136.250.157", user="root", password="123456",
database="testing", port=3306, charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
try:
# 创建游标
cur = conn.cursor()
sql = """
INSERT INTO test_user (NAME, mobile, address)
VALUES
(
'张三三',
18847474549,
'浙江杭州'
)
"""
# 执行创建sql语句
cur.execute(sql)
# 提交数据
conn.commit()
# 关闭游标
cur.close()
# 关闭数据库连接
conn.close()
except pymysql.err.MySQLError as _error:
raise _error
查询数据是否添加完成
终端查询的时候,发现汉字全部显示成了问号,其实是因为有些编码依旧不是utf8导致的
解决办法如下:
执行下面的命令,如果不能确定是哪个导致的,就全部执行完......
set character_set_client = utf8;
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set collation_connection = utf8_general_ci;
set collation_database = utf8_general_ci;
set collation_server = utf8_general_ci;
root@7c6316b19d80:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 83
Server version: 5.6.51 MySQL Community Server (GPL)
mysql> set character_set_client = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set collation_connection = utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
mysql> set collation_database = utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
mysql> set collation_server = utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
mysql> use testing;
Database changed
mysql> select * from test_user;
+----+-----------+-------------+--------------+
| id | name | mobile | address |
+----+-----------+-------------+--------------+
| 1 | 张三三 | 17748484141 | 浙江杭州 |
| 3 | python | 18856565858 | Hangzhou |
| 4 | java | 17756565858 | Hangzhou |
| 5 | php | 15556565858 | Hangzhou |
| 6 | c# | 17748484142 | Hangzhou |
| 9 | 111 | 18847474549 | 浙江杭州 |
+----+-----------+-------------+--------------+
6 rows in set (0.00 sec)
mysql查询数据
语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N]
-
SELECT 是查询的关键字
-
column_name,column_name 是指纵列的属性名称,或者直接*号(查询所有)
-
FROM 后面跟表名,指定查询哪个表
-
WHERE 后增加条件,例如:id=1或name='xxxx'等
-
LIMIT 就理解是条数,例如:LIMIT 1 就是获取一条数据
示例3:通过执行sql命令获取数据
root@7c6316b19d80:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 83
Server version: 5.6.51 MySQL Community Server (GPL)
mysql> use testing;
Database changed
mysql> select * from test_user;
+----+-----------+-------------+--------------+
| id | name | mobile | address |
+----+-----------+-------------+--------------+
| 1 | 张三三 | 17748484141 | 浙江杭州 |
| 3 | python | 18856565858 | Hangzhou |
| 4 | java | 17756565858 | Hangzhou |
| 5 | php | 15556565858 | Hangzhou |
| 6 | c# | 17748484142 | Hangzhou |
| 9 | 111 | 18847474549 | 浙江杭州 |
+----+-----------+-------------+--------------+
6 rows in set (0.00 sec)
示例4:使用python脚本获取数据
import pymysql
# 连接数据库
connection = pymysql.connect(host="8.136.250.157", user="root", password="123456",
database="testing", port=3306, charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection:
with connection.cursor() as cursor:
sql = """
SELECT
*
FROM
test_user
"""
cursor.execute(sql)
result = cursor.fetchall()
for i in result:
print(i)
except pymysql.err.MySQLError as _error:
raise _error
{'id': 1, 'name': '张三三', 'mobile': '17748484141', 'address': '浙江杭州'}
{'id': 3, 'name': 'python', 'mobile': '18856565858', 'address': 'Hangzhou'}
{'id': 4, 'name': 'java', 'mobile': '17756565858', 'address': 'Hangzhou'}
{'id': 5, 'name': 'php', 'mobile': '15556565858', 'address': 'Hangzhou'}
{'id': 6, 'name': 'c#', 'mobile': '17748484142', 'address': 'Hangzhou'}
{'id': 9, 'name': '111', 'mobile': '18847474549', 'address': '浙江杭州'}
Process finished with exit code 0
上述代码中可以明显看到,没有close操作了,而使用了with,with是python中的关键字,也叫上下文管理,通俗理解就是代码执行完毕后会自动执行清理工作,这里的清理指的就是自动关闭游标和连接操作......
注意三个获取数据的方法:
fetchall 获取多个数据,返回一个列表
result = cursor.fetchall()
for i in result:
print(i)
fetchone 获取单个数据,返回第一行数据
result = cursor.fetchone()
print(result)
fetchmany 是根据size的值来获取对应数量数据,无论多少条均返回列表类型
result = cursor.fetchmany(size=2)
print(result)
WHERE 条件查询
with connection.cursor() as cursor:
sql = """
SELECT
*
FROM
test_user
WHERE
id = 9
"""
cursor.execute(sql)
result = cursor.fetchone ()
print(result)
{'id': 9, 'name': '111', 'mobile': '18847474549', 'address': '浙江杭州'}
Process finished with exit code 0
LIMIT 条数获取
with connection.cursor() as cursor:
sql = """
SELECT
*
FROM
test_user
LIMIT 2
"""
cursor.execute(sql)
result = cursor.fetchall()
for i in result:
print(i)
{'id': 1, 'name': '张三三', 'mobile': '17748484141', 'address': '浙江杭州'}
{'id': 3, 'name': 'python', 'mobile': '18856565858', 'address': 'Hangzhou'}
Process finished with exit code 0
至此,mysql数据表中插入和查询完成......
以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,评论区留言会及时修正发布,谢谢!
未完,待续…
一直都在努力,希望您也是!
微信搜索公众号:就用python
