我正在尝试聚合一些教师数据(以便轻松地显示教师在一个学期中教授的课程),直到现在我才接受为每位教师提供多行.但是,如果我可以将教师的所有教学都放在一行中,那么对某些业务流程会有好处.这是一些示例数据(我的表有更多列,但总体思路不会有太大变化.
tbl_Instructors有:
N_ID | F_Name | L_Name
001 Joe Smith
002 Henry Fonda
003 Lou Reed
Run Code Online (Sandbox Code Playgroud)
tbl_Courses有:
Course_ID | N_ID | Course_Info
AAA 001 PHYS 1
AAB 001 PHYS 2
CCC 002 PHYS 12
DDD 003 PHYS 121
FFF 003 PHYS 224
Run Code Online (Sandbox Code Playgroud)
我想要回归的是:
N_ID | First_Name | Last_Name | Course_IDs
001 Joe Smith AAA, AAB
002 Henry Fonda CCC
003 Lou Reed DDD, FFF
Run Code Online (Sandbox Code Playgroud)
我想我需要做一些事情,从tbl_Instructors中选择所有N_ID,然后通过连接从tbl_Courses返回Course_IDs,但这个神奇的步骤已经提到了我.有帮助吗?我可以通过SQL选择执行此操作还是需要使用VB?
所以我有一个令人沮丧的简单问题,我似乎无法解决.
If Me.Bank_Credit.Value = Null Then
Me.Bank_Credit.Value = 0
End If
Run Code Online (Sandbox Code Playgroud)
基本上,我有一个未绑定的框,用户输入数据然后点击按钮.确认框上的"是"后,未绑定框上的数据将复制到绑定框中.但是,如果用户没有输入任何内容,那么反过来会创建一个空的绑定字段,这会严重搞砸了路上的查询.
话虽这么说,上面的代码根本不适用于我.例如,如果我设置了如果Me.Bank_Credit.Value = 1然后运行它,则1s变为2s,应该发生.但它只是拒绝为Null甚至""工作.
我很确定这个问题有一个简单的解决方案,我只是想不出来.
提前致谢
我有一个名为"条件名称"的coulmn名称(.sql文件已从服务器生成)
但在android中我从该表读取数据时遇到异常.
12-24 14:34:00.870:W/System.err(269):android.database.sqlite.SQLiteException:没有这样的列:condition :,
编译时:
SELECT条件,类别,子类别,条件名称,本地路径,远程路径,标题,content_type FROM库WHERE category =?
它无法识别整个表名并在空间中突破.如果您有任何想法,请帮助我.
我正在尝试将Pandas的DataFrame写入SQL Server表.这是我的例子:
import pyodbc
import pandas as pd
import sqlalchemy
df = pd.DataFrame({'MDN': [242342342] })
engine = sqlalchemy.create_engine('mssql://localhost/Sandbox?trusted_connection=yes')
df.to_sql('Test',engine, if_exists = 'append',index = False)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息.有关如何修复的任何想法?
c:\python34\lib\site-packages\sqlalchemy\connectors\pyodbc.py:82: SAWarning: No driver name specified; this is expected by PyODBC when using DSN-less connections
"No driver name specified; "
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-25-78677a18ce2d> in <module>()
4 engine = sqlalchemy.create_engine('mssql://localhost/Sandbox?trusted_connection=yes')
5
----> 6 df.to_sql('Test',engine, if_exists = 'append',index = False)
7
8 #cnxn.close()
c:\python34\lib\site-packages\pandas\core\generic.py in to_sql(self, name, con, flavor, schema, if_exists, index, …Run Code Online (Sandbox Code Playgroud) 我尝试将一堆数据插入数据库
insert_list = [(1,1,1,1,1,1),(2,2,2,2,2,2),(3,3,3,3,3,3),....] #up to 10000 tuples in this list
conn = pyodbc.connect('DRIVER={FreeTDS};SERVER=xxxxx;DATABASE=xxxx;UID=xx;PWD=xx;TDS_Version=7.0')
cursor = conn.cursor()
sql = "insert into ScanEMAxEMAHistoryDay(SecurityNumber, EMA1, EMA2, CrossType, DayCross, IsLocalMinMax) values (?, ?, ?, ?, ?, ?)"
cursor.executemany(sql, insert_list)
Run Code Online (Sandbox Code Playgroud)
cursor.executemany(sql,insert_list)
pyodbc.ProgrammingError:('参数类型无效.param-index = 4 param-type = numpy.int64','HY105')
减少到100元组:
cursor.executemany(sql, insert_list[:100])
Run Code Online (Sandbox Code Playgroud)
cursor.executemany(sql,insert_list [:100])
pyodbc.ProgrammingError:('参数类型无效.param-index = 4 param-type = numpy.int64','HY105')cursor.executemany(sql,insert_list [:100])
减少到5元组:
cursor.executemany(sql, insert_list[:5])
conn.commit()
Run Code Online (Sandbox Code Playgroud)
这可以插入数据库
我试着:
sql = 'SET GLOBAL max_allowed_packet=50*1024*1024'
cursor.execute(sql)
Run Code Online (Sandbox Code Playgroud)
在excutemany()之前,它有一个错误:
pyodbc.ProgrammingError:('42000',"[42000] [FreeTDS] [SQL Server]'GLOBAL'不是公认的SET选项.(195)(SQLExecDirectW)")
我是怎么解决这个问题的
谢谢.
我正在尝试在java.time最新版本的 Sql Server JDBC 驱动程序中使用新类。正如我所读到的,它应该只适用于方法:PreparedStatement.setObject()和ResultSet.getObject()。
所以我创建了示例代码,但不能让它与 ResultSets 一起工作。我不知道我在这里做错了什么。
Connection connection = DriverManager.getConnection(connectionString);
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM myTable WHERE ? BETWEEN date_from AND date_to");
preparedStatement.setObject(1, LocalDateTime.now()); // That works
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
Object o = resultSet.getObject("date_from");
o.getClass() returns java.sql.Timestamp
LocalDateTime dateTime = resultSet.getObject("date_from", LocalDateTime.class);
}
Run Code Online (Sandbox Code Playgroud)
这会引发异常:
com.microsoft.sqlserver.jdbc.SQLServerException:不支持转换为类 java.time.LocalDateTime。
驱动版本:mssql-jdbc-6.5.4.jre8-preview.jar
SQL Server 版本:2016
如何解释底部表格中的这句话:
Java 8 中的新 Java 类:LocalDate/LocalTime/LocalDateTime、OffsetTime/OffsetDateTime
新的 JDBC 类型:TIME_WITH_TIMEZONE、TIMESTAMP_WITH_TIMEZONE、REF_CURSOR
REF_CURSOR is not supported in SQL Server. …
我正在尝试将 pyodbc 查询的结果发送到我的视图,但我得到了TypeError: Object of type Row is not JSON serializable.
假设我在 SQL Server 中有一个这样的表:
| 第 1 列 | 列2 | 第 3 列 |
|---|---|---|
| 1 | 值1 | 值2 |
| 2 | 值3 | 值4 |
我通过 pyodbc 查询它并将数据传递到视图,如下所示:
return render_template(
'index.html'
,data={
'foor':'bar'
,'rows':db.execute(
'SELECT * '
'FROM [' + table.schema_name + '].[' + table.table_name + ']'
).fetchall()
}
)
Run Code Online (Sandbox Code Playgroud)
如果我打印{{ data.rows }}我想要有[[1,"val1","val2"],[2,"val3","val4"]],但我却得到了[(Decimal('1'), 'val1', 'val2'), (Decimal('2'), 'val3', 'val4')]。
如果我print(type(data.rows))在控制器中,我会得到<class 'list'>.
尝试在视图中将其转换为 JSON,{{ data.rows|tojson }} …
我有一个 SQL Alchemy 引擎,我尝试通过 sqlalchemy.sql.text 插入参数以防止 SQL 注入。
以下代码有效,其中我为条件和条件值编写了变量。
from sqlalchemy import create_engine
from sqlalchemy.sql import text
db_engine = create_engine(...)
db_engine.execute(
text(
'SELECT * FROM table_name WHERE :condition_1 = :condition_1_value'), condition_1="name", condition_1_value="John"
)
).fetchall()
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试为 编写变量名称时table_name,它返回错误。
from sqlalchemy import create_engine
from sqlalchemy.sql import text
db_engine = create_engine(...)
db_engine.execute(
text(
'SELECT * FROM :table_name WHERE :condition_1 = :condition_1_value'), table_name="table_1", condition_1="name", condition_1_value="John"
)
).fetchall()
Run Code Online (Sandbox Code Playgroud)
有什么想法为什么这行不通吗?
编辑:我知道这与不是字符串有关table_name,但我不确定如何以另一种方式做到这一点。
数据库中的希腊字符就像问号("?????").我找不到解决方案.我使用Java/Swing开发了一个应用程序但是当我在MySQL中插入希腊字母时就像问号一样.我将db collation更改为utf8和列.我的项目编码设置为UTF-8.当我从MySQL插入希腊字母时,它们被正确存储.
我正在使用MySQL连接器jar文件.
public class Testing {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/chartest","root","1234");
Statement pst=conn.createStatement();
String var1="??????";
String sql="INSERT INTO chars(value) values('"+var1+"')";
pst.execute(sql);
} catch (SQLException ex) {
Logger.getLogger(Testing.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
}
在 中python,我有一个从一个数据库 ( Redshiftvia psycopg2) 中选择数据的过程,然后将该数据插入SQL Server(via pyodbc)。我选择进行读/写而不是读/平面文件/加载,因为每天的行数约为 100,000。似乎更容易简单地连接和插入。但是 - 插入过程很慢,需要几分钟。
有没有更好的方法使用 Pyodbc 将数据插入 SQL Server?
select_cursor.execute(output_query)
done = False
rowcount = 0
while not done:
rows = select_cursor.fetchmany(10000)
insert_list = []
if rows == []:
done = True
break
for row in rows:
rowcount += 1
insert_params = (
row[0],
row[1],
row[2]
)
insert_list.append(insert_params)
insert_cnxn = pyodbc.connect('''Connection Information''')
insert_cursor = insert_cnxn.cursor()
insert_cursor.executemany("""
INSERT INTO Destination (AccountNumber, OrderDate, Value)
VALUES (?, ?, ?) …Run Code Online (Sandbox Code Playgroud)