我想从我的Java项目中操作Microsoft Access数据库(.accdb或.mdb文件).我不想使用Microsoft的JDBC-ODBC Bridge和Access ODBC驱动程序,因为:
我看到其他答案提到了名为UCanAccess的 Access数据库的JDBC驱动程序.如何设置我的Java项目以使用此方法?
(回答建议使用Java的Access数据库的更好方法也是最受欢迎的.)
以下代码ResultSet
使用JSONArray
和将a转换为JSON字符串JSONObject
.
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONException;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class ResultSetConverter {
public static JSONArray convert( ResultSet rs )
throws SQLException, JSONException
{
JSONArray json = new JSONArray();
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next()) {
int numColumns = rsmd.getColumnCount();
JSONObject obj = new JSONObject();
for (int i=1; i<numColumns+1; i++) {
String column_name = rsmd.getColumnName(i);
if(rsmd.getColumnType(i)==java.sql.Types.ARRAY){
obj.put(column_name, rs.getArray(column_name));
}
else if(rsmd.getColumnType(i)==java.sql.Types.BIGINT){
obj.put(column_name, rs.getInt(column_name));
}
else if(rsmd.getColumnType(i)==java.sql.Types.BOOLEAN){
obj.put(column_name, rs.getBoolean(column_name));
}
else if(rsmd.getColumnType(i)==java.sql.Types.BLOB){ …
Run Code Online (Sandbox Code Playgroud) 当我用... 编译C/C++程序时popen
,php
我收到此错误:
g++: error trying to exec 'cc1plus': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但如果我在shell中运行PHP代码..它工作正常..
在Arch Linux ..
PHP代码:
<?php
function rfile($fp) {
$out="";
while (!feof($fp)) {
$out.= fgets($fp, 1024000);
}
return $out;
}
$p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r');
$result = rfile($p);
pclose($p);
echo $result;
?>
Run Code Online (Sandbox Code Playgroud)
谢谢
我试图理解当我设置 python 代码在 VM 服务器上运行时开始出现的以下错误,该服务器在我的桌面上安装了 3.9.5 而不是 3.8.5。不确定这是否重要,但这可能是部分原因。
错误
C:\ProgramData\Miniconda3\lib\site-packages\pandas\io\sql.py:758: UserWarning: pandas only support SQLAlchemy connectable(engine/connection) or
database string URI or sqlite3 DBAPI2 connection
other DBAPI2 objects are not tested, please consider using SQLAlchemy
warnings.warn(
Run Code Online (Sandbox Code Playgroud)
这是一个相当简单的 .py 文件,该文件导入 pyodbc 和 sqlalchemy fwiw。产生警告的 sql 调用的相当通用/简单的版本是:
myserver_string = "xxxxxxxxx,nnnn"
db_string = "xxxxxx"
cnxn = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:"+myserver_string+";Database="+db_string +";TrustServerCertificate=no;Connection Timeout=600;Authentication=ActiveDirectoryIntegrated;"
def readAnyTable(tablename, date):
conn = pyodbc.connect(cnxn)
query_result = pd.read_sql_query(
'''
SELECT *
FROM [{0}].[dbo].[{1}]
where Asof >= '{2}'
'''.format(db_string,tablename,date,), conn) …
Run Code Online (Sandbox Code Playgroud) 我正在使用 async_engine。当我尝试执行任何操作时:
async with self.async_engine.connect() as con:
query = "SELECT id, name FROM item LIMIT 50;"
result = await con.execute(f"{query}")
Run Code Online (Sandbox Code Playgroud)
我越来越:
Exception has occurred: ObjectNotExecutableError
Not an executable object: 'SELECT id, name FROM item LIMIT 50;'
Run Code Online (Sandbox Code Playgroud)
这个问题之前由用户@stilmaniac提出过,但现在已从SO 中删除。
我在谷歌搜索缓存中找到了它,这里是副本。
我有同样的问题,所以我重新询问它,但原始版本如下:
我正在尝试从元数据创建表,如下所示:
Base = declarative_base()
properties = Table(
'properties', Base.metadata,
# ...
Column('geolocation', Geography(geometry_type='POINT', srid=4326)),
# ...
)
engine = create_async_engine("postgresql+asyncpg://user:password@postgres/")
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'CREATE INDEX …
Run Code Online (Sandbox Code Playgroud) 首先,我是开发界的一个全新的人,我目前正在学习人工智能/数据科学课程,我的工作之一是使用 SQL 数据库使用 Prophet 进行预测,然后使用这些预测进行预测PowerBI 但目前,我被 Python 代码困住了,我最初不是开发人员,所以我不知道问题出在哪里:
import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
from prophet import Prophet
import pymysql
engine = create_engine("mysql+pymysql://root:Password@localhost:3306/data")
query = "SELECT Cle_Produit, Date_Facturation, SUM(Quantite) AS Total_Quantite FROM ventes GROUP BY Cle_Produit, Date_Facturation"
df = pd.read_sql_query(query, engine)
df = df.pivot(index='Date_Facturation', columns='Cle_Produit', values='Total_Quantite')
df = df.reset_index()
df.rename(columns={'Date_Facturation': 'ds', 'Total_Quantite': 'y'}, inplace=True)
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast[['ds', 'yhat']].to_csv('forecast.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
它返回给我这条消息:
导入失败。交互式情节将不起作用。回溯(最近一次调用最后一次):文件“f:\Backup\Cours\Cours\Explo Data\app3.py”,第 9 行,在 df = pd.read_sql_query(query, engine) …
我有一个查询这是相当大的,在加盟十几张桌子,我想拉回来基于一个id字段记录(如:between nStartID and nEndID
).
我创建了两个参数并将它们作为标准进行测试,它们运行良好.
问题是,我需要在主查询中运行来自此主查询的插入查询,并且需要它们所在的参数.所以,我需要以编程方式将参数传递给它.
任何人都知道如何做到这一点?
谢谢.
我正在使用MySQL数据库并通过Java访问它.
PreparedStatement prep1 = this.connection.prepareStatement("UPDATE user_table
SET Level = 'Super'
WHERE Username = ?");
prep1.setString(1, username);
Run Code Online (Sandbox Code Playgroud)
上面的更新语句工作正常,但是我想获得受此语句影响的行数.这可能吗?
下面是我想要帮助的代码.我不得不运行超过1,300,000行,这意味着插入~300,000行需要40分钟.
我认为批量插入是加速它的路线?或者是因为我通过for data in reader:
部分迭代行?
#Opens the prepped csv file
with open (os.path.join(newpath,outfile), 'r') as f:
#hooks csv reader to file
reader = csv.reader(f)
#pulls out the columns (which match the SQL table)
columns = next(reader)
#trims any extra spaces
columns = [x.strip(' ') for x in columns]
#starts SQL statement
query = 'bulk insert into SpikeData123({0}) values ({1})'
#puts column names in SQL query 'query'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
print 'Query is: %s' …
Run Code Online (Sandbox Code Playgroud) java ×4
python ×3
sql ×3
ms-access ×2
mysql ×2
pandas ×2
pyodbc ×2
python-3.x ×2
sql-server ×2
sqlalchemy ×2
asyncpg ×1
bulkinsert ×1
c ×1
c++ ×1
gcc ×1
jdbc ×1
json ×1
linux ×1
parameters ×1
php ×1
resultset ×1
rowcount ×1
ucanaccess ×1
vba ×1