# 如果在ODBC中已配置密码,则只需要输入前面配置的dsnname作为参数,如果没有,则需要把账号和密码也传入uid和pwd
library(DBI)
<- dbConnect(odbc::odbc(), "dsnname", timeout = 10, encoding = "GBK")
con_dsn
library(DBI)
<- dbConnect(odbc::odbc(), "dsnname",
con_pwd uid = "userid",
pwd = "password", encoding = "GBK", timeout = 10
)
# 或直接使用连接字符串
<- dbConnect(odbc::odbc(),
con_str .connection_string = "Driver={MySQL ODBC 9.0 Unicode Driver};server=你的IP;uid=你的数据库账号;database= 要连接的数据库;PWD=数据库密码port=端口",
timeout = 10
)
ODBC连接数据库
数据库
sql
通过ODBC连接数据库
ODBC
下载安装ODBC驱动
配置ODBC
windows打开ODBS数据源管理器
配置系统DSN,添加新数据源
选择合适的ODBC驱动
按照对应ODBC驱动提示配置数据库连接信息
连接数据库
import pyodbc
# 使用 DSN 连接
= pyodbc.connect("DSN=dsnname;UID=userid;PWD=password;CHARSET=GBK", timeout=10)
con_dsn
# 使用用户名和密码连接
= pyodbc.connect("DSN=dsnname;UID=userid;PWD=password;CHARSET=GBK", timeout=10) con_pwd
查询数据
library(readr)
# 从文件读取 SQL 语句
<- read_file("sql_text.sql")
sql_file
# 直接在代码中写 SQL 语句
<- "SELECT * FROM table"
sql_inline
# 使用 DSN 连接查询
<- dbGetQuery(conn = con_dsn, statement = sql_file)
df_dsn
# 使用用户名/密码连接查询
<- dbGetQuery(conn = con_pwd, statement = sql_inline) df_pwd
import pandas as pd
# 使用 DSN 连接查询
= "SELECT * FROM table"
sql_query = pd.read_sql_query(sql=sql_query, con=conn_dsn)
df_dsn
# 使用用户名/密码连接查询
= pd.read_sql_query(sql=sql_query, con=conn_pwd) df_pwd
执行sql语句
<- "TRUNCATE table_name"
sql_exec
# 使用 DSN 连接执行
dbSendQuery(conn = con_dsn, statement = sql_exec)
# 使用用户名/密码连接执行
dbSendQuery(conn = con_pwd, statement = sql_exec)
= "DELETE FROM your_table WHERE id = 123"
sql_exec
# 使用 DSN 连接执行
conn_dsn.execute(sql_exec)
# 使用用户名/密码连接执行
conn_pwd.execute(sql_exec)
写入表格
library(DBI)
<- iris
df
# 使用 DSN 连接写入
dbAppendTable(conn = con_dsn, name = "target_table_name", value = df)
# 使用用户名/密码连接写入
dbAppendTable(conn = con_pwd, name = "target_table_name", value = df)
<- pd.DataFrame(iris)
df
# 使用 DSN 连接写入
df.to_sql("target_table_name", con = conn_dsn, if_exists = "replace", index = False)
# 使用用户名/密码连接写入
df.to_sql("target_table_name", con = conn_pwd, if_exists = "replace", index = False)
jdbc
下载JDBC驱动
R
library(RJDBC)
<- JDBC(
drv driverClass =
"com.mysql.jdbc.Driver",
classPath =
"mysql-connector-java-5.1.24.jar", # jar包路径
identifier.quote =
"`"
)
<- dbConnect(drv, "jdbc:mysql://你的IP:端口/数据库?user=账号&password=密码") con_tidb_jdbc
其他操作与ODBC连接一致
其他
import pandas as pd
import pymysql
# 连接数据库
= pymysql.connect(
connection ='your_tidb_server_host',
host=4000,
port='your_username',
user='your_password',
password='your_database',
database='utf8mb4'
charset
)
# 使用pandas的read_sql()函数查询数据
= "SELECT * FROM your_table" # 替换为你的SQL查询
sql_query = pd.read_sql(sql=sql_query, con=connection)
df
# 显示DataFrame内容
print(df)
# 关闭连接
connection.close()