Python MySQL合并

x33g5p2x  于2021-11-10 转载在 Python  
字(3.1k)|赞(0)|评价(0)|浏览(603)

创建新表

创建表名为product:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost", # 默认用主机名
  4. user="root", # 默认用户名
  5. password="123456", # mysql密码
  6. charset='utf8', # 编码方式
  7. database="chuan" # 数据库名称
  8. )
  9. mycursor = mydb.cursor()
  10. mycursor.execute("CREATE TABLE product (id VARCHAR(255), name VARCHAR(255),fav VARCHAR(255))")

再创建users表:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost", # 默认用主机名
  4. user="root", # 默认用户名
  5. password="123456", # mysql密码
  6. charset='utf8', # 编码方式
  7. database="chuan" # 数据库名称
  8. )
  9. mycursor = mydb.cursor()
  10. mycursor.execute("CREATE TABLE users (id VARCHAR(255), name VARCHAR(255) ,fav VARCHAR(255))")

无报错则创建成功。

表中添加数据

product表中添加:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost", # 默认用主机名
  4. user="root", # 默认用户名
  5. password="123456", # mysql密码
  6. charset='utf8', # 编码方式
  7. database="chuan" # 数据库名称
  8. )
  9. mycursor = mydb.cursor()
  10. sql = "INSERT INTO product (id, name,fav) VALUES (%s, %s,%s)"
  11. val = [
  12. { 4, 'John', 154},
  13. { 6, 'Amy', 155},
  14. { 7, 'Hannah',156},
  15. { 8, 'Michael' ,157}
  16. ]
  17. mycursor.executemany(sql, val)
  18. mydb.commit()
  19. print(mycursor.rowcount, "全部添加成功.")

custorm表中添加:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost", # 默认用主机名
  4. user="root", # 默认用户名
  5. password="123456", # mysql密码
  6. charset='utf8', # 编码方式
  7. database="chuan" # 数据库名称
  8. )
  9. mycursor = mydb.cursor()
  10. sql = "INSERT INTO product (id, name) VALUES (%s, %s)"
  11. val = [
  12. { 1, '菜鸟一号'},
  13. { 2, '菜鸟二号'},
  14. {3, '菜鸟三号'},
  15. { 4, '菜鸟四号'},
  16. { 5, '菜鸟五号'}
  17. ]
  18. mycursor.executemany(sql, val)
  19. mydb.commit()
  20. print(mycursor.rowcount, "全部添加成功.")

运行:

在这里插入图片描述

连接两个或多个表

您可以使用 JOIN 语句根据两个或多个表之间的相关列组合来自两个或多个表的行。
例如加入users和product,查看用户最喜欢的产品名称:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost",
  4. user="yourusername",
  5. password="yourpassword",
  6. database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ INNER JOIN products ON users.fav = products.id"
  10. mycursor.execute(sql)
  11. myresult = mycursor.fetchall()
  12. for x in myresult:
  13. print(x)

运行:

在这里插入图片描述

注意:您可以使用 JOIN 代替 INNER JOIN。他们都会给你同样的结果。

左连接

在上面的示例中,Hannah 和 Michael 被排除在结果之外,这是因为 INNER JOIN 仅显示存在匹配的记录。如果要显示所有用户,即使他们没有最喜欢的产品,也可以使用 LEFT JOIN 语句。
例如选择所有用户和他们最喜欢的产品:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost",
  4. user="myusername",
  5. password="mypassword",
  6. database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ LEFT JOIN products ON users.fav = products.id"
  10. mycursor.execute(sql)
  11. myresult = mycursor.fetchall()
  12. for x in myresult:
  13. print(x)

运行:

在这里插入图片描述

右连接

如果您想返回所有产品,以及收藏它们的用户,即使没有用户收藏它们,也可以使用 RIGHT JOIN 语句。例如选择所有产品,以及收藏这些产品的用户:

  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3. host="localhost",
  4. user="myusername",
  5. password="mypassword",
  6. database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ RIGHT JOIN products ON users.fav = products.id"
  10. mycursor.execute(sql)
  11. myresult = mycursor.fetchall()
  12. for x in myresult:
  13. print(x)

运行:

在这里插入图片描述

总结

至此已经讲完全部python mysql教程。你似乎会在困惑:sql语句到底该怎么用呢?可是我不会sql啊,对的,如果你不会,请看SQL教程如下:
SQL三万字超全教程

相关文章