Python MySQL合并

x33g5p2x  于2021-09-18 转载在 Python  
字(3.1k)|赞(0)|评价(0)|浏览(433)

创建新表

创建表名为product:

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 默认用主机名
    user="root",  # 默认用户名
    password="123456",  # mysql密码
    charset='utf8',  # 编码方式
    database="chuan"  # 数据库名称
)

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE product (id VARCHAR(255), name VARCHAR(255),fav VARCHAR(255))")

再创建users表:

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 默认用主机名
    user="root",  # 默认用户名
    password="123456",  # mysql密码
    charset='utf8',  # 编码方式
    database="chuan"  # 数据库名称
)

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE users (id VARCHAR(255), name VARCHAR(255) ,fav VARCHAR(255))")

无报错则创建成功。

表中添加数据

product表中添加:

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 默认用主机名
    user="root",  # 默认用户名
    password="123456",  # mysql密码
    charset='utf8',  # 编码方式
    database="chuan"  # 数据库名称
)

mycursor = mydb.cursor()

sql = "INSERT INTO product (id, name,fav) VALUES (%s, %s,%s)"
val = [
    { 4, 'John', 154},
    { 6,  'Amy',  155},
    { 7,  'Hannah',156},
    { 8,  'Michael' ,157}
]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "全部添加成功.")

custorm表中添加:

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 默认用主机名
    user="root",  # 默认用户名
    password="123456",  # mysql密码
    charset='utf8',  # 编码方式
    database="chuan"  # 数据库名称
)

mycursor = mydb.cursor()

sql = "INSERT INTO product (id, name) VALUES (%s, %s)"
val = [
    { 1, '菜鸟一号'},
    { 2, '菜鸟二号'},
    {3,  '菜鸟三号'},
    { 4, '菜鸟四号'},
    { 5, '菜鸟五号'}
]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "全部添加成功.")

运行:

在这里插入图片描述

连接两个或多个表

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

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ INNER JOIN products ON users.fav = products.id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

运行:

在这里插入图片描述

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

左连接

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

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="myusername",
  password="mypassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ LEFT JOIN products ON users.fav = products.id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

运行:

在这里插入图片描述

右连接

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

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="myusername",
  password="mypassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ RIGHT JOIN products ON users.fav = products.id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

运行:

在这里插入图片描述

总结

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

相关文章