imdb数据集安装文档 mysql + pgsql

imdb数据集下载

github 链接
wget ftp://ftp.fu-berlin.de/misc/movies/database/frozendata/*gz
速度可能较慢,需要耐心等待

imdbpy安装

imdbpy 需要安装Python3和mysqlclient
sudo apt install python3
pip3 install PyMySQL
pip3 install sqlalchemy
在github上下载imdbpy安装包,解压文件
unzip 6.8.zip
进入解压后的文件目录安装imdbpy
python3 setup.py install

imdb数据集导入

imdbpy导入IMDB数据集方法
在要导入IMDB的数据集上新建数据库实例
create database databasename;

进入解压后的文件目录,找到imdbpy2sql.py,此文件在bin目录下,执行如下命令
python3 imdbpy2sql.py -d [imdb_dataset_directory] -u ‘mysql://user:password@localhost/databasename’

例如: python3 imdbpy2sql.py -d /home/guomiaomiao/桌面/data -u ‘mysql://root:1234567890@localhost/imdb’
导入时间可能会很长,请耐心等待

可能会遇到问题

File “/home/guomiaomiao/anaconda3/envs/imdbInstall/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/mysqldb.py”, line 118, in dbapi
return import(“MySQLdb”)
ModuleNotFoundError: No module named ‘MySQLdb’

解决方案:
打开对应文件
添加代码

import pymysql
pymysql.install_as_MySQLdb()

例如:
@classmethod
def dbapi(cls):
import pymysql
pymysql.install_as_MySQLdb()
return import(“MySQLdb”)

### 实现多数据源配置 为了在 Spring Boot 项目中同时使用 MyBatis Plus 连接 MySQL 和 PostgreSQL 数据库,可以采用多数据源的方式。这涉及到引入必要的依赖并进行相应的配置。 #### 添加 Maven 或 Gradle 依赖 对于 MySQL 和 PostgreSQL 的支持,需添加对应的 JDBC 驱动以及 MyBatis Plus 相关依赖: ```xml <!-- 对于Maven--> <dependencies> <!-- MyBatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis.plus.version}</version> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- PostgreSQL Driver --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <!-- DBCP Connection Pool (如果选用DBCP作为连接池) --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> </dependency> </dependencies> ``` #### 创建自定义数据源配置类 创建两个独立的数据源 Bean 来分别管理 MySQL 和 PostgreSQL 的连接[^1]。 ```java @Configuration public class DataSourceConfig { @Bean(name = "mysqlDataSource") @ConfigurationProperties(prefix = "spring.datasource.mysql") public DataSource mysqlDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "postgresDataSource") @ConfigurationProperties(prefix = "spring.datasource.postgres") public DataSource postgresDataSource() { return DataSourceBuilder.create().build(); } } ``` #### 定义动态数据源切换逻辑 编写 DynamicDataSource 类来处理不同场景下的数据源选择问题,并注册该类为 Spring 上下文中的 bean[^2]。 ```java import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class DynamicDataSource extends AbstractRoutingDataSource { private final ThreadLocal<String> contextHolder = new ThreadLocal<>(); @Override protected Object determineCurrentLookupKey() { return getContextKey(); } public void setContextKey(String key){ this.contextHolder.set(key); } private String getContextKey(){ return this.contextHolder.get(); } } @Bean(name="dynamicDataSource") @Primary public DynamicDataSource dynamicDataSource(@Qualifier("mysqlDataSource") DataSource mysqlDs, @Qualifier("postgresDataSource") DataSource pgDs){ Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put("mysql", mysqlDs); targetDataSources.put("postgres", pgDs); DynamicDataSource dataSource = new DynamicDataSource(); dataSource.setDefaultTargetDataSource(mysqlDs); // 默认指向MySQL dataSource.setTargetDataSources(targetDataSources); return dataSource; } ``` #### 修改 application.properties 文件 设置多个数据源的相关属性,在 `application.yml` 中指定不同的前缀区分各个数据源的参数[^3]。 ```yaml spring: datasource: mysql: url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver postgres: url: jdbc:postgresql://localhost:5432/postgres_db username: user_name password: pass_word driver-class-name: org.postgresql.Driver ``` #### 使用 AOP 切面编程控制事务边界 可以通过切面拦截器机制实现在方法调用前后改变当前线程绑定的数据源名称,从而达到按业务需求灵活切换的效果。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值