-
将多个表中的记录连接并返回结果
-
join方式
-
交叉连接(cross join)
-
内连接(inner join)
-
外连接(outer join)
-
cross join:
-
生成两张表的笛卡尔积
-
返回的记录数为两张表记录数的乘积
-
inner join
-
生成两张表的交集
-
返回的记录数为两张表交集的记录数
-
outer join
-
left join(A,B) 返回表A的所有记录,另外表B中匹配的记录有值没有匹配的记录返回null
import sqlite3
db_path = 'test_join.sqlite'
conn = sqlite3.connect(db_path)
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS department")
cur.execute("CREATE TABLE department(\
id INT PRIMARY KEY NOT NULL, \
dept CHAR(50) NOT NULL, \
emp_id INT NOT NULL)")
depts = (
(1, 'IT Builing', 1),
(2, 'Engineerin', 2),
(3, 'Finance', 7)
cur.executemany("INSERT INTO department VALUES(?, ?, ?)", depts)
cur.execute("DROP TABLE IF EXISTS company")
cur.execute("CREATE TABLE company(\
id INT PRIMARY KEY NOT NULL, \
name CHAR(50) NOT NULL, \
age INT NOT NULL, \
address CHAR(50) NOT NULL,\
salary DOUBLE NOT NULL)")
companies = (
(1, 'Paul', 32, 'California', 20000.0),
(2, 'Allen', 25, 'Texas', 15000.0),
(3, 'Teddy', 23, 'Norway', 20000.0),
(4, 'Mark', 25, 'Rich-Mond', 65000.0),
(5, 'David', 27, 'Texas', 85000.0),
(6, 'Kim', 22, 'South-Hall', 45000.0),
(7, 'James', 24, 'Houston', 10000.0)
cur.executemany("INSERT INTO company VALUES (?, ?, ?, ?, ?)", companies)
conn.commit()
cur.execute("SELECT emp_id, name, dept FROM company CROSS JOIN department;")
rows = cur.fetchall()
for row in rows:
print(row)
运行结果:
cur.execute("SELECT emp_id, name, dept FROM company INNER JOIN department \
ON company.id = department.emp_id;")
rows = cur.fetchall()
for row in rows:
print(row)
运行结果:
cur.execute("SELECT emp_id, name, dept FROM company LEFT OUTER JOIN department \
ON company.id = department.emp_id;")
rows = cur.fetchall()
for row in rows:
print(row)
运行结果:
Python数据分析:数据库多表连接(SQLite)多表连接:将多个表中的记录连接并返回结果join方式交叉连接(cross join)内连接(inner join)外连接(outer join)cross join:生成两张表的笛卡尔积返回的记录数为两张表记录数的乘积inner join生成两张表的交集返回的记录数为两张表交集的记录数ou...
python 不同
数据库之间
表数据同步
最近项目有这样的需求:不同
数据库中
表数据的同步操作。也就是从一个
数据库把
表数据插入到另一个
数据库的
表中。
import configparser
import pymysql
# 读取配置文件
conf = configparser.RawConfigParser()
conf.read("D:\PycharmProjects\economic_relation\\venv\Include\control\conf.ini")
# 获取源
数据库参数
Python内置了SQLite3,在Python中使用SQLite,不需要安装任何东西,直接使用即可。
由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。
Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可。
使用SQLite需要了解的一些概念:
1、表是数据库中存放关系数据的集合,...
在sql server中:
用table1的 id 和 table2的 pid,
关联table1 和 table2 ,将table2的num字段的值赋给table1的num字段
update table1
set num1 = t2.num2
FROM table1 t1 INNER JOIN table2 t2
ON t1.id=t2.pid;
很容易就
关联起来了
sqlite却不支持这种
关联
,可以这样:
2.2>配置其它
数据库
app.config['SQLALCHEMY_DATABASE_URI'] = r'mysql://myname:123456@127.0.00.1:8080'
基本格式:别名+驱动://用户名:密码@主机:端口/
The author selected the COVID-19 Relief Fund to receive a donation as part of the Write for DOnations program.
作者选择了COVID-19救济基金来接受捐赠,这是Write for DOnations计划的一部分。
介绍 (Introduction)
SQLite is a sel...
引言:面试的时候面试官出的这道题,当时写的不是太好,面试结束后下来查了一下,发现大部分的博客都是使用工具包来实现,而且大部分的博客内容还都完全一样,连数字都没有变,找了半天也没找到几个有用的博客。其实这也是现在大部分博客的风气,互相抄袭,没有一点自己的思考内容,我都不明白写这样的博客有什么意义。所以自己打算实现一个不使用工具包来解决的方法,于是在别人的博客帮助下,实现了用回溯法来解决笛卡尔乘积,下面是总结一下解决这个问题的几个方法:
1、工具包
from itertools import produc